【发布时间】:2014-02-27 06:33:18
【问题描述】:
我正在创建一些将被分离的 std::threads。我想让它们运行很长时间,并希望它们自己处理异常。
我使用 std::thread(Function) 创建了一个线程,并在释放互斥锁之前调用了 detach 并且 Function 执行以下操作:
void BlockStart() noexcept {
std::lock_guard<std::mutex> sync(lock);
}
void Function()
{
BlockStart();
try
{
throw;
}
catch(...)
{
std::cerr << "Caught something...\n";
}
}
每次我运行这段代码时,都不会调用异常处理程序。调用 std::terminate() 的默认处理程序,它调用 abort。
如何让 std::thread 启动线程来处理异常?
【问题讨论】:
-
您能否提供一个完整的、可编译的示例来演示该问题?
标签: c++ multithreading c++11