Как лучше всего определить количество запускаемых потоков на машине с n ядрами? (C ++)

У меня есть vector с 10 000 000 (10 миллионами) элементов, и что у моей рабочей станции четыре ядра. Существует функция ThrFunc , которая работает с целым числом. Предположим, что время выполнения ThrFunc для каждого целого числа в векторе примерно одинаково.

Как мне определить оптимальное количество потоков для запуска? Ответ настолько прост, как количество элементов, разделенное на количество ядер? Или есть более тонкие вычисления?

Редактирование для предоставления дополнительной информации

  • Нет необходимости в блокировке; для каждого вызова функции требуется только чтение доступ
20
задан sshow 17 January 2012 в 08:31
поделиться