我面临一种情况,std::async
完全异步启动操作会很好。
future<void> MyClass::MyAsyncFunc() {
std::future<void> f = std::async(...);
return f;
} // The future goes out of scope, will block.
问题是如果我不保存未来,该功能将在最后阻塞。我希望这不会发生。
这将阻止在std::future
函数作用域的末尾调用其析构函数:
shared_ptr<future<void>> MyClass::MyAsyncFunc() {
auto shared_ftr = std::make_shared<std::future<void>>();
*shared_ftr = std::async([shared_ftr]() {...});
return shared_ftr;
}
这可能行得通吗?当我不将结果保存在变量中时会发生什么?