Utilizo std::for_each
con std::execution::par
para realizar cálculos complejos en una gran entrada representada como vector de estructuras. El cálculo no necesita retrasos relacionados con el hardware (red o disco IO, por ejemplo), es el cálculo "solo CPU". Para mí, parece lógico que no tenga sentido crear más subprocesos del sistema operativo que los que tenemos en el hardware; sin embargo, Visual C ++ 2019 crea en promedio 50 subprocesos y, a veces, hasta 500, incluso solo hay 12 subprocesos de hardware.
¿Hay una manera de limitar hilos paralelos contar hasta hardware_concurrency
con std::for_each
y std::execution::par
, o la única manera de crear hilos razonables count es para uso con código personalizado std::thread
?
std::for_each
otros algoritmos del <algorithm>
encabezado. La idea principal detrás std::execution::par
es hacer que el código paralelo sea casi tan simple como el secuencial, y la paralelización de los algoritmos existentes con cambios mínimos de código y semántica.