我正在将程序移植到Windows环境中,该环境直接使用clang的语言扩展__c11_atomic_compare_exchange_strong
进行一些CAS操作。
MSVC(2015年,2017年)中该功能的等效内容是什么?
答案 0 :(得分:0)
正如@ 0xBADF00所建议的那样,希望用它们的C++11 std::atomic等效替换这些调用。自VS 2012以来,MSVC的std::atomic
为full support。
但是,如果由于某种原因你不想这样做(例如,你希望你的代码在VS 2010上编译),std::atomic_compare_exchange_strong
的Visual C ++等价物是InterlockedCompareExchange
函数。请注意,这些函数不使用模板,因此存在不同大小的基元的变体,例如InterlockedCompareExchange64
。因此,它们不能用作直接替代品,因为您需要对所使用的类型使用适当的版本。