Saya gunakan std::for_each
dengan std::execution::par
untuk melakukan perhitungan kompleks pada input besar yang direpresentasikan sebagai vektor struktur. Perhitungan tidak memerlukan penundaan yang terkait dengan perangkat keras (misalnya jaringan atau disk IO), itu adalah komputasi "hanya CPU". Bagi saya kelihatannya logis bahwa tidak ada gunanya membuat lebih banyak utas OS yang kami miliki yang perangkat kerasnya; namun, Visual C ++ 2019 menciptakan rata-rata 50 utas, dan terkadang hingga 500 utas bahkan hanya ada 12 utas perangkat keras.
Apakah ada cara untuk membatasi jumlah thread paralel hardware_concurrency
dengan std::for_each
dan std::execution::par
, atau satu-satunya cara untuk membuat jumlah thread yang masuk akal adalah dengan menggunakan kode khusus std::thread
?
std::for_each
dan algoritma lainnya dari <algorithm>
header. Gagasan utama di belakang std::execution::par
adalah membuat kode paralel dekat sesederhana yang berurutan, dan memparalelkan algoritma yang ada dengan kode minimal dan perubahan semantik.