Что делает MaxDegreeOfParallelism?

Я использую Parallel.ForEach и делаю некоторые обновления базы данных, теперь без установки MaxDegreeOfParallelism, машина с двухъядерным процессором приводит к тайм-аутам клиента sql, в то время как машина с четырехъядерным процессором почему-то не истекает.

Теперь у меня нет контроля над тем, какие ядра процессора доступны для выполнения моего кода, но есть ли какие-то настройки, которые я могу изменить с помощью MaxDegreeOfParallelism, которые, вероятно, будут выполнять меньше операций одновременно и не приведут к тайм-аутам?

Я могу увеличить таймауты, но это не лучшее решение, если на более низком процессоре я могу обрабатывать меньше операций одновременно, это снизит нагрузку на процессор.

Хорошо, я прочитал все другие сообщения и MSDN, но установка MaxDegreeOfParallelism на более низкое значение приведет к тому, что мои четырехъядерные машины пострадают?

Например, есть ли способ сделать что-то вроде, если у ЦП два ядра, тогда используйте 20, если у ЦП четыре ядра, то 40?

49
задан Gennady Vanin Геннадий Ванин 14 April 2013 в 23:18
поделиться