最近在阅读《C++ Concurrency in Action, 2nd Edition》,记一点笔记
一 并发的实现
并发有2种实现方式:
- 多进程:多个单线程进程
- 多线程:单个进程里使用多个线程
以上这2种方式各有优缺点,多进程:
- 优点:各个进程的数据不会互相干扰,安全性高
- 缺点:多个进程需要更多开销;进程间通信实现麻烦且效率低
多线程:
- 优点:资源开销少,访问共享数据速度快
- 缺点:线程间共享地址空间,容易造成数据混乱,需要处理好多个线程访问同一数据的问题
大部分情况下,C++并发都是采用多线程,通过牺牲一定的安全性来换取更高的性能。
二 何时使用并发
当有以下2种情况时,考虑使用并发:
- 分割任务
- 高性能
其它的情况都可以变成单线程来处理。