<分区>
我可以想到无关紧要的原因,以及一种您可能不想使用它们的情况,即当您想要测试非原子操作行为的设计时。
还有哪些其他原因?具体来说,我正在做一个有一些罕见竞争条件的项目,因为测试没有使用原子增量。我想知道,当它的函数已经存在时,为什么我不总是使用原子增量?
谢谢!
标签 c++ c multithreading atomic
<分区>
我可以想到无关紧要的原因,以及一种您可能不想使用它们的情况,即当您想要测试非原子操作行为的设计时。
还有哪些其他原因?具体来说,我正在做一个有一些罕见竞争条件的项目,因为测试没有使用原子增量。我想知道,当它的函数已经存在时,为什么我不总是使用原子增量?
谢谢!
最佳答案
因为原子比较慢。它们减慢了调用线程的速度,它们也可能减慢其他线程的速度,甚至可能是那些不访问相同原子的线程。它们还可能会阻止编译器执行它本来会执行的某些重新排序优化。
关于c++ - 什么时候不使用原子操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21709780/