gpt4 book ai didi

c++ - 使用 boost::thread::interrupt() 时,您*需要*捕获 thread_interrupted 异常吗?

转载 作者:可可西里 更新时间:2023-11-01 16:36:34 26 4
gpt4 key购买 nike

我有几个长时间运行的 boost 线程,我希望能够通过中断它们来关闭它们。我能找到的所有文档都说您可以捕获thread_interrupted 异常,但它并没有真正说明如果您不这样做会发生什么。我会假设它会杀死线程(并希望线程得到正确清理)。但是异常会随着线程消失吗?或者它会被传递到主线程并杀死它吗?

最佳答案

异常与任何其他 C++ 异常一样。如果您选择不捕获它,它会导致与任何其他未处理的异常相同的效果。

如果未被捕获,它不会传播到主线程,但可能会导致其他不良行为。在 Visual C++ 上,默认情况下这将是 terminate your process , 例如。

一般来说,防御性编程实践会要求您捕获您的代码可能抛出的任何异常 - 就像您从您调用的 OS API 检查错误一样。

有一个关于中断的背景 here由编写大量 Boost.Thread 代码的人编写。

关于c++ - 使用 boost::thread::interrupt() 时,您*需要*捕获 thread_interrupted 异常吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6375121/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com