私は、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;
}
これはうまくいくでしょうか?結果を変数に保存しないとどうなりますか?