为什么多线程反而更慢:锁竞争、上下文切换与缓存争用

为什么多线程反而更慢:锁竞争、上下文切换与缓存争用

20分钟 ·
播放数2
·
评论数0

四个线程为什么可能比一个线程更慢?这一集从一个共享计数器出发,追踪互斥锁从用户态原子操作、缓存行争抢,到 Linux futex 等待和唤醒的完整路径。

还会区分锁竞争与伪共享,解释上下文切换、调度延迟和缓存变冷怎样放大成本,并给出分片计数、批量合并、缩小临界区等实际优化方法。

重点内容:

- 无竞争加锁为什么通常不进入内核

- futex 如何让竞争线程等待和被唤醒

- 临界区很短为什么仍可能拖慢程序

- 原子加一为什么也存在扩展性上限

- 锁竞争与伪共享有什么区别

- 如何建立多线程性能排查的因果链

英文词对照:

- Mutex:互斥锁

- Atomic Operation:原子操作

- Critical Section:临界区

- Lock Contention:锁竞争

- Futex:快速用户空间互斥机制

- Context Switch:上下文切换

- False Sharing:伪共享

- Cache Line:缓存行

- Spin:自旋

- Thundering Herd:惊群