关于This question .
C++11 添加了将异常编码到不同线程的能力(使用 std::exception_ptr
)并恢复其传播。
我想知道这样的传播是否是自动的,也就是说:如果我无法处理线程中的异常,它是否会自动在父线程中传播?
我有点怀疑(或者它必须以某种方式明确等待 join
),但我还不精通 C++11。值得注意的是,我认为在 std::future
的情况下,它可以自动存储异常。
最佳答案
传播不是自动的 thread
.如果一个线程抛出,并且该异常没有被捕获,程序无论如何都会终止。future
和 shared_future
将在子线程中存储一个未捕获的异常。当 get
时,该异常会自动传播。叫做。
关于multithreading - 跨线程的异常传播?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7272306/