と同じ時間で実行される:C++マルチスレッド・コードは、私は、次のコード(マルチスレッド・バージョン)を有するsinglethreaded
std::vector<std::thread> threads;
for (size_t i = 0; i < videos.size(); ++i) {
threads.push_back(std::thread([&features, i]() {
for (size_t j = 0; j < videos.at(i).size(); ++j) {
features.extract(...);
}
});
threads.back().join();
}
問題はsinglethreadedバージョンを実行するのに約3分を要し、マルチスレッドが再びかかることです約3分実行します。外側のforループは2回のため、2つのスレッドがあります。実行時間が少し改善されるべきではないでしょうか?数秒でさえ?
..スレッド作成のオーバーヘッドと連続して作業しているとき... – Jarod42
@ Jarod42いつ参加する必要がありますか?外側ループの直後かもしれませんか? – DimChtz
スレッドのベクトル全体を結合する必要があります。 – user1810087