Eu uso std::for_eachcom std::execution::parpara executar computação complexa em entradas enormes representadas como vetor de estruturas. O cálculo não precisa de atrasos relacionados ao hardware (E / S de rede ou disco, por exemplo), é "apenas CPU". Para mim, parece lógico que não faz sentido criar mais threads de SO do que as de hardware; no entanto, o Visual C ++ 2019 cria, em média, 50 threads e, às vezes, até 500, mesmo que existam apenas 12 threads de hardware.
Existe uma maneira de limitar a contagem de threads paralelos para hardware_concurrencywith std::for_eache std::execution::par, ou a única maneira de criar uma contagem razoável de threads é usar código personalizado std::thread?
std::for_eachoutros algoritmos do <algorithm>cabeçalho. A principal idéia por trás disso std::execution::paré tornar o código paralelo quase tão simples quanto o seqüencial e paralelizar os algoritmos existentes com alterações mínimas de código e semântica.