c++ - 从多线程应用程序中高效退出(细节)

标签 c++ multithreading parallel-processing exit

我已经阅读了一些关于将消息从一个线程冒泡到所有其他线程以正常退出的正确方法的来源(每个线程都执行它自己的退出例程)。其中,我喜欢全局原子 bool 值的想法,它可以从任何线程进行标记,所有其他线程检查此标记以执行退出例程 - 当所有线程都加入时,主线程然后可以退出应用程序。

纯粹的计算线程可能会有不同的处理方式,对吧?

这样既高效又安全吗?有更好的方法吗?

谢谢!

最佳答案

我不喜欢线程检查 bool (或其他)状态变量以了解何时做什么,因为这很浪费。线程将不得不旋转,不断检查变量以查看是否有新指令。这会烧毁 CPU。

更好的选择是创建一个信号量或在 Windows 中创建一个事件,并让所有线程等待它。线程可以在不忙时休眠,并且不会仅仅为了检查变量而窃取其他执行实际工作的线程的时间片。

关于c++ - 从多线程应用程序中高效退出(细节),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4324735/

相关文章:

c++ - 错误 C1001 : An internal error has occurred in the compiler

python - 集成 Python 和 C++ MacOS PyModuleDef_HEAD_INIT 未声明

c++ - 选择锁粒度

optimization - Haskell中自动并行的现状

java - 在 Java 7 中并行处理结果,使用非最终变量

.net - 简单线程速成类?

c++ - 子串递归算法不起作用

c++ - "Where"这个重载运算符是否接受 "out"?

java - Android - 无法初始化监视器线程 : Unable to establish loopback connection,

java线程,我的代码有什么问题