第 22.19.2 节
并行是什么
作者
发布于 2026/10/06更新于 2026/10/06
并行(parallelism)关注的是:
多个任务是否在同一时刻真的同时执行。
它更偏向性能和吞吐,而不是单纯的程序结构。
一个直观理解
如果一件事可以拆成几份独立工作:
任务 A
任务 B
任务 C
任务 D并且机器有多个 CPU 核心,那么这些任务就可能同时运行。
这就是并行:
多个执行单元
同一时刻
同时干活并行和并发的区别
并发是:
多个任务都在推进并行是:
多个任务真的同时执行所以一个程序可以:
有并发,但没有并行:单核 CPU 上多个线程轮流执行;
有并发,也有并行:多核 CPU 上多个线程同时计算;
使用并行算法,但不手动创建线程:让标准库或底层运行时决定怎样执行。
并行不等于线程越多越快
线程数量超过硬件能同时执行的数量后,操作系统需要不断切换线程。
线程切换、同步、锁竞争、缓存失效都会带来额外开销。
所以并行优化时要关心:
任务能不能拆开?
拆开以后是否足够独立?
每个任务的计算量是否足够大?
任务之间是否频繁争抢同一份数据?
并行带来的收益是否大于调度和同步成本?
C++ 中可能遇到的并行内容
后续可以继续补充:
标准库并行算法;
execution policy;
任务并行;
数据并行;
SIMD 与向量化;
线程池与任务调度。
当前先预留这个位置,等并发基础学完后再展开会更合适。

