0xh*_*ker 5 c multithreading gcc compare-and-swap
我想使用原子比较和交换,但不是等于,我想只在内存位置不等于旧值时进行交换.在C中有可能吗?
这取决于您的体系结构,但通常在 C 中不可能做到这一点。
通常,比较和交换是通过一条指令来实现的,该指令以原子方式从内存中的某个位置加载,并在内存中的位置与您指定的某些现有值匹配时将值存储到该位置。
至少在 x86 上,没有规定仅在值不匹配时才执行此加载。另外还不清楚为什么你会想做这样的事情。也许另一种架构会支持类似的东西,但这将取决于架构,而不是可以在 C 中以可移植的方式完成的东西。
| 归档时间: |
|
| 查看次数: |
1622 次 |
| 最近记录: |