Saya gunakan std::for_eachdengan std::execution::paruntuk 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_concurrencydengan std::for_eachdan std::execution::par, atau satu-satunya cara untuk membuat jumlah thread yang masuk akal adalah dengan menggunakan kode khusus std::thread?
std::for_eachdan algoritma lainnya dari <algorithm>header. Gagasan utama di belakang std::execution::paradalah membuat kode paralel dekat sesederhana yang berurutan, dan memparalelkan algoritma yang ada dengan kode minimal dan perubahan semantik.