Uso std::for_eachcon std::execution::parper eseguire calcoli complessi su immensi input rappresentati come vettore di strutture. Il calcolo non richiede alcun ritardo relativo all'hardware (ad esempio IO di rete o del disco), è un calcolo "solo CPU". Per me sembra logico che non abbia senso creare più thread del sistema operativo di quelli hardware; tuttavia, Visual C ++ 2019 crea in media 50 thread e, talvolta, fino a 500 thread, anche se sono presenti solo 12 thread hardware.
Esiste un modo per limitare il conteggio dei thread paralleli hardware_concurrencycon std::for_eache std::execution::par, o l'unico modo per creare un conteggio di thread ragionevole è utilizzare il codice personalizzato con std::thread?
std::for_eache con altri algoritmi dall'intestazione <algorithm>. L'idea principale alla base std::execution::parè rendere il codice parallelo quasi semplice come quello sequenziale e parallelizzare gli algoritmi esistenti con modifiche minime al codice e alla semantica.