硬件支持原子提取和添加vs fetch-and-or

时间:2012-01-11 22:30:03

标签: c++ lock-free

fetch_add似乎是win(对于支持两者的CPU上的CAS循环,也见帖子评论)。

当切换清除位以设置位时,可以使用按位或加法运算。结果将是相同的。我希望每个人的表现都是平等的。因此决定使用哪种操作取决于操作的硬件支持的差异(如果有的话,我没有提供有关相关处理器支持的任何信息。)

在这种情况下,有理由更喜欢一个吗?

1 个答案:

答案 0 :(得分:1)

您可能想要做的是使用编译器内在函数,而不是编码特定的处理器体系结构。例如,GCCClang支持几个原子内置函数,其中一个是__sync_fetch_and_or

自Visual Studio 2005以来,Visual C ++已支持_InterlockedOr on all architectures