gpt4 book ai didi

multithreading - 基本互斥锁和原子整数哪个更有效?

转载 作者:行者123 更新时间:2023-12-01 16:40:14 26 4
gpt4 key购买 nike

对于像计数器这样简单的东西,如果多个线程将增加数量。我读到互斥锁会降低效率,因为线程必须等待。所以,对我来说,原子计数器是最有效的,但我读到在内部它基本上是一个锁?所以我想我很困惑为什么其中一个比另一个更有效。

最佳答案

原子操作利用处理器支持(比较和交换指令)并且根本不使用锁,而锁则更依赖于操作系统,并且在例如 Win 和 Linux 上执行不同的操作。

锁实际上会挂起线程执行,为其他任务释放 CPU 资源,但在停止/重新启动线程时会产生明显的上下文切换开销。相反,尝试原子操作的线程不会等待并继续尝试直到成功(所谓的忙等待),因此它们不会产生上下文切换开销,但也不会释放 cpu 资源。

总而言之,如果线程之间的争用足够低,原子操作通常会更快。您绝对应该进行基准测试,因为没有其他可靠的方法可以知道上下文切换和忙等待之间的最低开销是多少。

关于multithreading - 基本互斥锁和原子整数哪个更有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15056237/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com