我已经阅读了一些关于将消息从一个线程冒泡到所有其他线程以正常退出的正确方法的来源(每个线程都执行它自己的退出例程)。其中,我喜欢全局原子 bool 值的想法,它可以从任何线程进行标记,所有其他线程检查此标记以执行退出例程 - 当所有线程都加入时,主线程然后可以退出应用程序。
纯粹的计算线程可能会有不同的处理方式,对吧?
这样既高效又安全吗?有更好的方法吗?
谢谢!
最佳答案
我不喜欢线程检查 bool (或其他)状态变量以了解何时做什么,因为这很浪费。线程将不得不旋转,不断检查变量以查看是否有新指令。这会烧毁 CPU。
更好的选择是创建一个信号量或在 Windows 中创建一个事件,并让所有线程等待它。线程可以在不忙时休眠,并且不会仅仅为了检查变量而窃取其他执行实际工作的线程的时间片。
关于c++ - 从多线程应用程序中高效退出(细节),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4324735/