我有以下代碼(多線程版本):C++多線程代碼執行在相同的時間單線程
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();
}
的問題是,在單線程版本需要大約3分鐘來執行與多線程再次取大約3分鐘即可執行。外部for循環兩次,所以有兩個線程。我不應該看到執行時間有所改進嗎?甚至幾秒鐘?
你不應該立即加入.. 。然後你的工作與線程創建的開銷串聯... – Jarod42
@ Jarod42我應該什麼時候加入?也許在外環之後? – DimChtz
也你必須加入整個線程向量。 – user1810087