c++ - 比较和交换与测试和设置

标签 c++ atomic thread-synchronization

有人可以向我解释一下上述操作在多线程中的工作原理和区别吗?

最佳答案

test-and-set 修改内存位置的内容并将其旧值作为单个原子操作返回。

compare-and-swap 以原子方式将内存位置的内容与给定值进行比较,并且只有当它们相同时才会修改该内存位置的内容到给定的新值。

用粗体标出的区别。

关于c++ - 比较和交换与测试和设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3659336/

相关文章:

java - Java 中的 128 位比较交换

ruby - 在 Ruby 中实现同步屏障

java - 使用 CyclicBarrier 的 Barrier.await() 之后线程没有继续进行

c - 线程在加入之前退出

c++ - 从字符串加载字节数组无法正常工作?

mysql - 用于验证存储设备上的原子 IO 操作的应用程序?

c++ - Cuda 原子和条件分支

c++ - 你能从模板参数函数签名中提取类型吗

c++ - 在 MISRA C++ 2008 中,有人知道规则 5-0-3 中出现的特殊概念 Cvalue 表达式吗?

c++ - 在 qt main.cpp 中转换 rootobject() 以与 qml 通信时出错