是否将a传递std::future给std::thread安全操作的独立实例?我知道在下面,std::futureshared_ptr中的状态与共享std::promise。这是一个例子。
int main()
{
std::promise<void> p;
std::thread( [f = p.get_future()]() {
if ( f.wait_for( std::chrono::seconds( 2 ) ) == std::future_status::ready )
{
return;
}
std::terminate();
} ).detach();
// wait for some operation
p.set_value();
}
Run Code Online (Sandbox Code Playgroud)
上面的代码中有一个潜在的错误情况,即在主线程退出之后执行lambda。主线程退出后,共享状态是否仍保留?