c++11标准最重要的新特性之一就是支持多线程。首次接纳原生语言层面的多线程应用,并在标准库中为之提供组件。这使得多线程C++应用程序的编写无需依赖平台的专属扩展,得以写出可移植的、行为确定的多线程代码。
本系列主旨介绍运行多线程编写C++并发程序。
1. 并发的定义
包括多任务操作系统任务切换和基于多处理器的“真并发”。
1.1 并发的方式
多进程和单进程多线程。
多进程并发:需要进程间通信,固定开销大,更容易编写出安全的并发代码。
多线程并发:同一进程内所有线程都共用相同的空间地址,且所有线程都能直接访问大部分数据。额外开销更低,c++并不直接支持进程间通信,所以采用多进程的应用不得不依赖于平台专属的API。
1.2 并发与并行
并发和并行的差别甚小,主要是着眼点和使用意图不同。两个术语都是指使用可调配的硬件资源同时运行多个任务,但并行更强调性能。当人们谈及并行时,主要关心的是利用可调配的硬件资源提升大规模数据处理的性能;当谈及并发时,主要关心的是分离关注点或响应能力。