何时不使用原子操作?

时间:2014-02-11 18:13:09

标签: c++ c multithreading atomic atomicity

我可以在无关紧要时考虑原因,以及您可能不想使用它们的情况,这是您希望使用非原子操作测试行为设计的时候。

还有其他一些原因吗?具体来说,我正在研究一个具有罕见竞争条件的项目,因为测试不使用原子增量。我想知道,为什么当它的函数已经存在时,我不会总是使用原子增量?

谢谢!

2 个答案:

答案 0 :(得分:7)

因为原子速度较慢。它们会降低调用线程的速度,并且它们也可能会减慢其他线程的速度,甚至可能会访问相同的原子线。它们还可能会阻止编译器执行某些重新排序优化,否则它将执行这些优化。

答案 1 :(得分:1)

原子操作可能比非原子操作更昂贵。在不需要线程之间同步的情况下,例如更新非共享本地,atomiticy会增加不必要的开销,应该避免。