c++ - 什么时候不使用原子操作?

标签 c++ c multithreading atomic

<分区>

我可以想到无关紧要的原因,以及一种您可能不想使用它们的情况,即当您想要测试非原子操作行为的设计时。

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

谢谢!

最佳答案

因为原子比较慢。它们减慢了调用线程的速度,它们也可能减慢其他线程的速度,甚至可能是那些不访问相同原子的线程。它们还可能会阻止编译器执行它本来会执行的某些重新排序优化。

关于c++ - 什么时候不使用原子操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21709780/

相关文章:

c++ - 如何让 QLineEdit 跟随光标显示它的坐标

c++ - 接口(interface)作为模板参数

c++ - C++ 中的异步线程安全日志记录(无互斥量)

c++ - 在 C++ 中什么时候需要或需要 "explicit specialization"?

c++ - 在 Visual Studio 2013 中随时调试程序执行时的情况

multithreading - 如何以线程安全的方式停止正在运行的任务?

c - 在Linux上编译OpenCL ICD加载器时出错

c - libcurl c/c++ Kerberos 身份验证

c# - 使 [IsOneWay=true] WCF 服务异步与在客户端使用任务调用同步方法之间是否存在显着差异?

java - 如何在 Java 中重用一个线程?