私はstd::async
を使用して、以前に逐次実行されていたタスクの実行を高速化しました。std :: asyncタスクの完了を通知する
私の実装は、以下のない:
- (例えば、最大で10個の同時タスクの)タスクの事前設定された番号を起動し、これらのタスクのための先物は、ベクターに格納されています。
- 1つのタスクが終了するとすぐに別のタスクを起動するため、任意の時点で最大10個のタスク(この値が設定されている)が実行されます。
- 10個のタスクを起動した後、実装は、その先のget()を呼び出すことで、最も古いタスク(つまり、ベクトルの最初のタスク)が完了するのを待ちます。
これは正常に動作しますが、10個のタスクのいずれかが最初に完了する可能性があります。私の実装は、常にベクトルの最初のタスクを待ちます。知っている方法はありますか?最初に完了した10のタスクはどれですか?
将来のオブジェクト自体は準備ができていることを通知します。 https://msdn.microsoft.com/en-us/library/jj155756.aspx
おそらく二重引用符:http://stackoverflow.com/questions/27341029/what-is-the-best-way-to-wait-on-multiple-condition-variables-in-c11 –
コードを表示してください。これを行う方法はたくさんあります。 – Tyler
答えをありがとう。私は質問に詳細を追加します。 –