在MSVC中,clang builtin __c11_atomic_compare_exchange_strong相当于什么?

时间:2017-09-07 07:50:32

标签: c++11 visual-c++

我正在将程序移植到Windows环境中,该环境直接使用clang的语言扩展__c11_atomic_compare_exchange_strong进行一些CAS操作。

MSVC(2015年,2017年)中该功能的等效内容是什么?

1 个答案:

答案 0 :(得分:0)

正如@ 0xBADF00所建议的那样,希望用它们的C++11 std::atomic等效替换这些调用。自VS 2012以来,MSVC的std::atomicfull support

但是,如果由于某种原因你不想这样做(例如,你希望你的代码在VS 2010上编译),std::atomic_compare_exchange_strong的Visual C ++等价物是InterlockedCompareExchange函数。请注意,这些函数不使用模板,因此存在不同大小的基元的变体,例如InterlockedCompareExchange64。因此,它们不能用作直接替代品,因为您需要对所使用的类型使用适当的版本。