.NET 4 Parallel.ForEach и PLINQ: могут ли они перегрузить пул потоков и снизить производительность приложения?

Чем больше я использую Parallel.ForEach и PLINQ в своем коде, тем больше лиц и отзывов о проверке кода я получаю . Поэтому мне интересно, есть ли у меня какая-либо причина НЕ использовать PLINQ, в крайнем случае, для каждого оператора LINQ? Может ли среда выполнения быть недостаточно умной, чтобы начать порождать столько потоков (или потреблять так много потоков из пула потоков), что производительность приложения фактически ухудшится, а не улучшится? Тот же вопрос относится и к параллельной библиотеке.

Я понимаю последствия, связанные с безопасностью потоков и накладными расходами при использовании многопоточности. Я также понимаю, что не все хорошо для распараллеливания. Все, что меня интересует, должен ли я перестать защищать свои подходы и просто отказаться от этих двух прекрасных вещей, потому что мои коллеги думают, что мне лучше самому управлять потоками, а не полагаться на средства .NET?

ОБНОВЛЕНИЕ: предположим, что аппаратное обеспечение достаточно хорошее, чтобы удовлетворить предварительные требования для использования многопоточности.

8
задан Schultz9999 25 March 2012 в 04:56
поделиться