【问题标题】:Exception propagation across threads?跨线程的异常传播?
【发布时间】:2011-11-08 11:52:48
【问题描述】:

关于This question

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

我想知道这样的传播是否是自动的,即:如果我无法在线程中处理异常,是否会在父线程中自动传播?

我有点怀疑它(或者它必须以某种方式明确地等待join),但我对 C++11 还不是很了解。值得注意的是,我认为对于std::future,它可以自动存储异常。

【问题讨论】:

    标签: multithreading exception-handling c++11


    【解决方案1】:

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

    futureshared_future 将在子线程中存储未捕获的异常。然后在调用 get 时自动传播该异常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-17
      • 1970-01-01
      • 2012-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多