【发布时间】:2016-12-17 16:48:30
【问题描述】:
我有点困惑,但我的问题很简单。
我有一堆线程,我想通过在主线程中处理其他线程发送后的所有异常来集中处理错误。
- 我是否使用共享的
exception_ptr全局并在每个线程的每个catch子句中使用std::current_exception()?还是我需要为不同的线程使用不同的excpetion_ptr对象?我想保留所有例外情况。 - 一旦将
current_exception分配给exc_ptr变量,当我从主线程访问exc_ptr时,是否需要同步从主线程读取?
【问题讨论】:
-
是的,你当然需要“t”。没有它你就不能输入“线程”这个词。
-
是的,你需要正确的同步,虽然我喜欢 std::async/std:: 未来
-
您在各个线程中都有各种异常,您想在另一个线程中处理所有异常?这如何有用/可维护/可行?
-
通常你按值抛出异常并按引用捕获。不需要指针,无论是共享的还是其他的,也不需要同步,也不需要
std::current_exception(它适用于真正例外情况)。 -
“我想集中错误处理”。目前还不清楚你的意思到底是什么。
标签: c++ multithreading c++11 exception