Я використовую std::for_eachз std::execution::parдля виконання складних обчислень на величезному вході представлений в вигляді вектора структур. Для обчислення не потрібні затримки, пов'язані з обладнанням (наприклад, мережевий або дисковий IO), це "просто CPU". Для мене виглядає логічним, що немає сенсу створювати більше потоків ОС, у яких є апаратні; однак Visual C ++ 2019 створює в середньому 50 потоків, а іноді до 500, навіть є лише 12 апаратних потоків.
Чи є спосіб обмежити паралельні потоки розраховувати на hardware_concurrencyз std::for_eachі std::execution::par, або єдиним способом створити розумні теми підраховувати є використання призначеного для користувача коду з std::thread?
std::for_eachта інші алгоритми з <algorithm>заголовка. Основна ідея std::execution::par- створення паралельного коду настільки ж просто, як послідовний, і паралелізація існуючих алгоритмів з мінімальними змінами коду та семантики.