私はlamba foo
を持っています。何も返さず、何も返す必要はありません。私はこれを行うと は:返り値が格納されていないと、std :: asyncは新しいスレッドを生成しません
std::future<T> handle = std::async(std::launch::async, foo, arg1, arg2);
すべてが正常に動作し、ラムダは新しいスレッドで生み出されます。 しかし、std::async
が返すstd::future
を保存しないと、fooはメインスレッドで実行され、ブロックされます。
std::async(std::launch::async, foo, arg1, arg2);
私はここで何が欠けていますか? just::thread
documentationから
おそらく '' 'async'''によって返される' '' future'''はすぐに破棄されます。 '' '' 'のデストラクタが暗黙のうちに暗黙のうちに待機しているのであれば、私は驚かないだろう。 –