繁体   English   中英

当使用boost :: thread :: interrupt()时,你需要*来捕获thread_interrupted异常吗?

[英]When using boost::thread::interrupt(), do you *need* to catch the thread_interrupted exception?

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

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

如果未被捕获,它将不会传播到主线程,但可能会导致其他不良行为。 例如,在Visual C ++上,这将终止您的进程

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

编写了很多Boost.Thread代码的人在这里有一个关于中断的背景资料。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM