2

次のようないくつかの非同期タスクを開始しています。

for(UINT Id: myIds)
{
    std::async([=]
    {
        DoSomeStuffUsingId(Id);               

        return true;
    });
}

これらすべてのタスクが完了したかどうかを知る必要がある関数があります。

void SomeFunction()
{ 
    if (all async tasks have completed)
    {
        do something else
    }
}

次のように非同期タスクを待機できることを理解しています。

std::future<bool> fut = std::async (do something); 
fut.wait();

そして、このリンクからわかるように、複数の先物を待っていますか? 複数の先物をまだ待っていないこと。

すべてのタスクが完了したかどうかを確認するために使用できるトリックはありますか?

それぞれの未来を配列またはベクトルに格納して、順番に待つことはできますか?

4

2 に答える 2

0

std::shared_future (コピー可能) または vector::emplace_back() を使用して、コピーはできないが移動できる std::futures を配置できます。

于 2015-05-18T19:13:41.323 に答える