我可以在无关紧要时考虑原因,以及您可能不想使用它们的情况,这是您希望使用非原子操作测试行为设计的时候。
还有其他一些原因吗?具体来说,我正在研究一个具有罕见竞争条件的项目,因为测试不使用原子增量。我想知道,为什么当它的函数已经存在时,我不会总是使用原子增量?
谢谢!
答案 0 :(得分:7)
因为原子速度较慢。它们会降低调用线程的速度,并且它们也可能会减慢其他线程的速度,甚至可能会访问相同的原子线。它们还可能会阻止编译器执行某些重新排序优化,否则它将执行这些优化。
答案 1 :(得分:1)
原子操作可能比非原子操作更昂贵。在不需要线程之间同步的情况下,例如更新非共享本地,atomiticy会增加不必要的开销,应该避免。