C++ 嵌套函数中的退出线程
我希望在必要时检查线程中的全局C++ 嵌套函数中的退出线程,c++,multithreading,C++,Multithreading,我希望在必要时检查线程中的全局bool值: 如果是true,线程应该退出,如果是false,线程应该继续 检查时,我可以在单个函数中,也可以在嵌套函数中。我需要确保首先返回主函数,然后在主函数中返回0,这看起来非常愚蠢 所以我能想到的唯一方法就是在条件满足时抛出一个异常,然后在这个线程的末尾捕获它,这样所有的元素都被正确地破坏了 那么C++语言中有更标准的方法来实现吗?在嵌套函数中如何退出线程?您的方法很好。与线程创建和销毁的成本相比,抛出异常的成本可以忽略不计 如果出于某些原因不允许您使用异常
bool
值:
如果是true
,线程应该退出,如果是false
,线程应该继续
检查时,我可以在单个函数中,也可以在嵌套函数中。我需要确保首先返回主函数,然后在主函数中返回0,这看起来非常愚蠢
所以我能想到的唯一方法就是在条件满足时抛出一个异常,然后在这个线程的末尾捕获它,这样所有的元素都被正确地破坏了
那么C++语言中有更标准的方法来实现吗?在嵌套函数中如何退出线程?您的方法很好。与线程创建和销毁的成本相比,抛出异常的成本可以忽略不计 如果出于某些原因不允许您使用异常:
- 在代码中的多个位置检查信号变量。请注意,常规代码运行速度非常快,所以您只需要在长时间计算(循环)或可能阻塞的IO操作内/之前进行这些检查。确保代码的其余部分不依赖于某些未完成计算的结果
- 使用始终从每个函数返回错误代码的编码样式(至少对于该线程)
ExitThread
和pthread\u exit
,但不建议使用它们,因为它们会导致内存泄漏:如果线程是使用std::thread
创建的,则不会调用析构函数,包括CRT/stdlib内部对象
< >答案是:没有,C++中没有标准的线程退出方法。只考虑线程是一个正则函数。异常是执行非局部“GOTO”的标准方式。