2013-03-30 48 views
0

我有一个qt应用程序,有几个boost线程正在运行。当我在我的一个qt事件处理程序中遇到未处理的异常(例如std :: runtime_error)时,boost线程还会捕获thread_interrupted异常。当qt崩溃时,boost线程中断

为什么会发生这种情况?我已经在所有中断点都尝试了catch块,比如boost睡眠,所以我不能确定thread_interrupted异常来自哪里(即使所有被记录为中断点的调用都已经存在包裹在try-catch块中)。

运行时或qt以某种方式终止boost线程并导致thread_interrupted异常吗?

理想情况下,我想在qt中的任何未处理的异常出现在主线程中,而不是在boost线程中。

回答

0

已解决。我在屏障上发现了无保护的等待。 当Qt插槽发生异常时,Qt开始清理并调用应用程序析构函数。这反过来导致我的线程被中断,等待障碍的线程抛出异常。