我想在C++中原子实现TestandSet。什么操作等效于C++中的xchg指令

最佳答案

您可以使用内部函数,具体取决于您的编译器。在gcc中,例如使用__sync_lock_test_and_set(请参阅-http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Atomic-Builtins.html)

或者,您可以使用内联汇编并直接执行锁定的xchg

如果您使用的是c++ 11,则可以使用std::atomic函数。但是,这提供了更高的抽象级别,因此到x86 ISA的转换不是一对一的。参见-https://www.cl.cam.ac.uk/~pes20/cpp/cpp0xmappings.html

关于c++ - 如何在C++原子编码中执行xchg汇编指令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22481869/

10-10 05:22