私は構造体のベクトルを反復処理し、各構造体を個別に処理しています。
それはこのようなものになります。DoTaskが特定のWebサイトに接続し、HTMLを解析しているためforループ/ for_eachの各繰り返しを並列に行うことはできますか? (C++ 11)
for_each(begin(data),end(data),DoTask);
//assume "data" is std::vector<DataT>
//assume DoTask is a function that takes a DataT by reference
コードはかなり遅いです。
これをスピードアップするにはどうすればよいでしょうか?
私の目標は、複数のDataTを同時に分析することです。
私はスレッディングにはとても新しいですが、std::asyncとstd::futureが有望です。
-1この例では、 'std :: async'から作成された' std :: future'のデストラクタがブロックされるため、完全に同期しています。これには、作業のスケーリングなどもありません。 – inf
@bamboonあなたが正しいです、私は 'future's、良い点のデストラクタにもかかわらず。私がこの答えを書いたとき、スレッドライブラリの私の理解は未来を包含しませんでした。私はそれが正しいと改訂した、と私は思う。そしてOPはワークステリングを必要としませんでした。 –