在我的应用程序中,可以使用boost :: thread :: interrupt来中断线程。我想重用已中断的线程,我可以捕获boost :: interrupted_exception,还是在意识形态上不正确?
答案 0 :(得分:2)
我想重用已中断的线程
你looks like可以(强调添加):
boost :: thread_interrupted只是一个普通的异常,所以它可以 抓住了,就像其他任何例外一样。这就是“中断”的原因 抛出异常时清除标志 - 如果线程捕获并且 处理中断,打断它是完全可以接受的 再次。 这可以用于,例如,当工作线程是 处理一系列独立任务 - 如果当前任务是 中断,工人可以处理中断并丢弃 任务,并转到下一个任务,然后可以反过来 中断。它还允许线程捕获异常和 通过其他方式终止自己,例如返回错误代码,或 将异常翻译为通过模块边界。