0

在我的应用程序中,线程可以被 boost::thread::interrupt 中断。我想重用被中断的线程,我可以抓住 boost::interrupted_exception,还是思想上不正确?

4

1 回答 1

2

我想重用中断的线程

看起来你可以(强调):

boost::thread_interrupted 只是一个普通的异常,所以它可以被捕获,就像任何其他异常一样。这就是为什么在抛出异常时清除“中断”标志的原因——如果一个线程捕获并处理中断,再次中断它是完全可以接受的。这可以用于,例如,当一个工作线程正在处理一系列独立任务时——如果当前任务被中断,工作线程可以处理中断并丢弃该任务,并转移到下一个任务,然后可以在轮流被打断。它还允许线程捕获异常并通过其他方式终止自身,例如返回错误代码,或将异常转换为通过模块边界。

于 2012-09-07T06:38:24.130 回答