一:概念
Ⅰ.背景
C++11标准中的一个最重要的新特性就是支持多线程程序.在语言级别承认多线程应用的存在,并且在库中为编写多线程程序提供组件.
使得不依赖平台编写多线程程序成为可能.并且加强了可移植性。
Ⅱ.并发介绍
1.计算机系统中的并发
提到计算机术语的并发,是指真正的在单个系统里面同时执行多个独立的活动.而不是顺序的一个接一个的
以前的任务快速切换很快,给我们并发的错觉,但是这并不是并发.
无论是多核处理器或者是拥有多个处理器,这个计算机能够真正的并行运行超过一个任务.我们才称之为硬件并发.
要考虑的最重要的因素是硬件线程的数量:即硬件可以真正并发运行多少个独立的任务.即使是具有真正的硬件并发的系统,也很容易有超过硬件可以并行运行的任务要执行.所以在这些情况下任务切换还是要被使用.
2.并发的途径
多进程并发
将应用程序分为多个,独立的,单线程的进程.他们运行在同一时刻.
这些独立的进程可以通过所有常规的进程间通信渠道相互传递信息.
多线程并发
在单个进程中运行多个线程.
线程很像轻量级的进程:每个线程相互独立运行,且每个线程可以运行不同的指令序列.
进程中的所有线程都共享相同的地址空间.并且从所有线程中访问到大部分数据–全局变量依然是全局的,指针,对象的引用或者数据可以在线程之间传递.
进程间的数据共享可能会遇到问题.意味着必须对线程之间的通信作大量的思考.
Ⅲ.为什么使用并发
为了划分关注点