参考:
https://blog.youkuaiyun.com/yand789/article/details/27324295
汇编实现:https://www.jianshu.com/p/fa6d9d9c63b4
compare_exchange_weak 的伪码逻辑:
if *(目标内存地址) == expected:
*(目标内存地址) = desired;
return true;
else:
expected = *(目标内存地址);
return false;
这里涉及到 三个值:
这里涉及到 三个值:1)要检查的内存 中的值 ;
2)希望 需要检查的内存中 内应当是什么值 expected ; (对应compare)
3)如果 需要检查的内存 中的存放的值 和 expected 一致,那么使用新值重新填充 需要检查的内存,否则使用需要检查的内存的当前值填充expected。 &n

本文深入解析了 compare_exchange_weak 操作的逻辑,包括其伪码实现和内存比较交换的过程。该操作涉及三个关键值,并在内存值与预期值相等时更新内存。通过一个例子展示了 compare_exchange_weak 在原子变量上的用法,以及在循环中确保交换成功的策略。同时,讨论了在某些平台可能存在的错误返回情况,并提供了循环检查的语义解释。
最低0.47元/天 解锁文章
1168





