2014-01-30 3 views
0

моей системы заключается в следующем: Intel (R) ядро ​​(TM) i7-3820QM CPU @ 2.70GHz, 2694 МГц, 4 ядра (ы), 8 логический процессор (ы)PLINQ и логические процессоры конфигурации

Вы можете заметить, что моя машина имеет 4 ядра и 8 логических процессоров.

Если я буду использовать запрос PLINQ воспользоваться параллелизмом, можно указать 7 для WithDegreeOfParallelism поэтому запрос будет воспользоваться всеми логическими процессорами, создав один поток для каждого логического процессора?

ответ

2
  1. Вам не нужно указывать PLINQ сколько логических процессоров у вас есть. Он уже знает (используя Environment.ProcessorCount), и он будет оптимизировать запрос соответствующим образом. Целью WithDegreeOfParallelism является контроль над тем, что PLINQ не знает, например, если ваш код в основном I/O интенсивный, а не CPU интенсивный.
  2. Вы может сделать это если вы настаиваете.
  3. Если у вас 8 процессоров, почему бы вам ограничить его до 7?
+0

Чтобы ответить на ваш третий вопрос, не имеет значения 7 или 8. Я просто оставил его, если другие приложения будут голодать. –

+1

@wonderfulworld нет необходимости делать это. В ваших потоках есть временной фрагмент, и ОС беспокоится о голоде. вы должны использовать ресурсы, которые он дает вам столько, сколько сможете. Поэтому, если ваш код имеет интенсивность процессора, оставьте его в 8 (по умолчанию в PLINQ), если он интенсивный, тогда вам, вероятно, потребуется большее число. – i3arnon

+0

Спасибо. Я понимаю, что операции с привязкой к ЦП должны быть параллельными, но не IO. Я ошибаюсь? –

Смежные вопросы