one*_*ute 6 c++ parallel-processing multithreading exit
我已经阅读了一些关于将消息从一个线程冒泡到所有其他线程以正常退出的正确方法的几个来源(每个线程都执行它自己的退出例程).其中,我喜欢可以从任何线程标记的全局原子布尔的想法,并且所有其他线程检查此标志以执行退出例程 - 当所有线程连接时,主线程可以退出应用程序.
纯粹的计算线程可能会以不同的方式处理,对吧?
这是有效和安全的吗?有一个更好的方法吗?
谢谢!
在 Windows 中,我使用 QueueUserAPC 调用一个引发异常的函数,导致线程干净退出。
我在这个答案中写了更多关于细节的内容:
总而言之,会发生以下情况:
假设线程 A 想要终止线程 B(然后是 C、D……)
QueueUserAPC()
,将句柄传递给线程 B 以及将引发 MyThreadExit 类异常的函数的地址。WaitForSingleObjectEx
,也许SleepEx
,或者别的什么。