gpt4 book ai didi

c - GCC 在现代处理器上的比较和交换保证是什么

转载 作者:太空宇宙 更新时间:2023-11-04 04:23:07 25 4
gpt4 key购买 nike

我想知道 __sync_bool_compare_and_swap() 在不同场景下保证什么

当只有一个线程访问数据时——我假设它会检查指针,如果它与值匹配则交换它

但是,如果两个处理器同时进行比较和交换呢?会发生什么?

如果一个线程在另一个线程正在设置值时进行比较和交换怎么办?

如果一个值受互斥量保护时线程进行比较和交换怎么办

当然假设只有 2 个线程同时访问任何数据...

最佳答案

要理解的关键点是,这是使用能够原子写入的特定 CPU 指令完成的。

如果两个线程进行比较和交换,其中一个将能够首先完成,另一个将失败并且必须使用新值重试。

如果该值在两个线程中都受互斥锁保护(假设有 2 个线程),那么无论如何 __sync_bool_compare_and_swap() 都会一次调用一个。如果它仅在一个线程中受到保护,则将其视为未 protected ,即互斥量无效。

关于c - GCC 在现代处理器上的比较和交换保证是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44379443/

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