相关疑难解决方法(0)

x86上交换与比较和交换锁的相对性能

两种常见的锁定习语是:

if (!atomic_swap(lockaddr, 1)) /* got the lock */
Run Code Online (Sandbox Code Playgroud)

和:

if (!atomic_compare_and_swap(lockaddr, 0, val)) /* got the lock */
Run Code Online (Sandbox Code Playgroud)

其中val可能只是一个常量或锁定的新潜在所有者的标识符.

我想知道的是x86(和x86_64)机器上的两者之间是否存在任何显着的性能差异.我知道这是一个相当广泛的问题,因为单个cpu模型之间的答案可能差异很大,但这是我要求的原因之一,而不仅仅是我可以访问的几个cpus的基准测试.

c x86 assembly locking atomic

25
推荐指数
2
解决办法
6220
查看次数

标签 统计

assembly ×1

atomic ×1

c ×1

locking ×1

x86 ×1