我正在創建幾個將被分離的std :: threads。我想讓這些運行很長時間,並希望它們自己處理異常。std ::線程創建的線程沒有處理異常
我創建使用的std ::線程(功能)線程和釋放互斥體之前都要求分離並在功能並執行以下操作:
void BlockStart() noexcept {
std::lock_guard<std::mutex> sync(lock);
}
void Function()
{
BlockStart();
try
{
throw;
}
catch(...)
{
std::cerr << "Caught something...\n";
}
}
每次我運行此代碼,異常處理程序不被調用。 std :: terminate()的默認處理程序被調用,它調用中止。
如何獲得一個std ::線程啓動線程來處理異常?
您能否提供一個完整的可編譯示例來演示該問題? –