Я хочу знать, сколько потоков будет использовано при запуске цикла Parallel.For/ForEach.
Я обнаружил, что его можно изменить с помощью опции MaxDegreeOfParallelism.
Справка MaxDegreeOfParallelism в MSDN говорит (ссылка):
По умолчанию For и ForEach будут использовать, однако, много потоков, базовый планировщик обеспечивает, поэтому изменение MaxDegreeOfParallelism от значение по умолчанию ограничивает количество одновременных задач.
Но я не знаю, сколько предоставляет потоковый планировщик.
Как я могу узнать это?
Я мог бы протестировать его с циклом с прогонами 9999999, однако этот тест покажет мне номер, но не правило, определяющее это число.
Изменить/добавить позже:
Я googled для "sheduler max concurrency", и я нашел (в MSDN - ссылка), что класс TashSheduler
имеет свойство MaximumConcurrencyLevel
и
Возвращает целое число, которое представляет максимальный уровень concurrency. Планировщик по умолчанию возвращает Int32.MaxValue.
Этот класс TaskSheduler используется как "базовый планировщик" для этих параллельных циклов?