跨线程的异常传播?

8

关于这个问题的相关内容。

C++11增加了将异常传递到不同线程的能力(使用std::exception_ptr),并恢复其传播。

我想知道这样的传播是否是自动的,也就是说:如果我在一个线程中未能处理异常,它会自动传播到父线程吗?

我有点怀疑(或者它必须以某种方式明确等待join),但我对C++11还不太熟悉。特别是,在std::future的情况下,我认为它可以自动存储异常。

1个回答

9

thread 不会自动传播异常。如果一个线程抛出异常并且该异常没有被捕获,那么程序无论如何都会终止。

futureshared_future 会在子线程中存储未捕获的异常。当调用 get 方法时,该异常将自动传播。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接