我想在必要时检查线程中的全局bool
值:
如果它是true
线程应该退出,并且线程应该继续,如果它是false
。
在检查时,我可以在单个函数内部,或者我可以在嵌套函数中。我需要确保首先返回main函数,然后在main函数中返回return 0
,这似乎非常愚蠢。
因此,我能想到的唯一方法是在满足条件时throw
异常,然后在该线程的末尾捕获它,以便正确地破坏所有元素。
那么用C ++语言有更标准的方法吗?如何在嵌套函数中退出线程?
答案 0 :(得分:2)
你的方法很好。与线程创建和销毁的成本相比,抛出异常可以忽略不计。
如果由于某些原因您不允许使用例外:
检查信令变量代码中的几个位置。请注意,常规代码运行速度非常快,因此您只需要在长时间计算(循环)内部/之前进行这些检查(或循环)或可能阻塞的IO操作。确保其余代码不依赖于某些未完成的计算结果。
使用编码样式,始终从每个函数返回错误代码(至少对于此线程)。
答案 1 :(得分:1)
有一些特定于系统的函数,如ExitThread
和pthread_exit
,但建议不要使用它们,因为它们会导致内存泄漏:不会调用析构函数,包括CRT / stdlib内部对象,如果线程是使用std::thread
创建的。
所以答案是:不,没有标准的方法来退出C ++中的线程。只需将线程视为常规函数。