темы в пуле потоков - PullRequest
       6

темы в пуле потоков

3 голосов
/ 16 августа 2010

Я читал о пулах. Ряд сайтов говорят, что максимальное количество потоков в пуле потоков по умолчанию составляет 25 (на процессор). Однако я не изменил максимальные потоки и когда я делаю:

Threadpool.GetAvailableThreads (из WorkThreads, из compPortThreads);

Я получаю 500,1000. Я использую двухъядерный ПК, поэтому не ожидаю более 50.

Есть ли у меня 500, 1000 в моем бассейне?

Спасибо John

Ответы [ 3 ]

7 голосов
/ 16 августа 2010

Это изменилось между версиями:

Начиная с документация класса ThreadPool в Visual Studio 2005 :

В каждом процессе существует один пул потоков.Размер пула потоков по умолчанию составляет 25 потоков на каждый доступный процессор.

Начиная с документация по классу ThreadPool в Visual Studio 2010 :

Для каждого процесса существует один пул потоков.Пул потоков имеет размер по умолчанию 250 рабочих потоков на каждый доступный процессор и 1000 потоков завершения ввода / вывода.

В качестве забавного примечания: для Visual Studio 2008 документация на английском языке обещает 250 рабочих потоков, в то время как немецкий перевод дает только 25. Ах, радости глючных переводов ...

7 голосов
/ 16 августа 2010

Количество потоков по умолчанию на процессор значительно изменилось в разных версиях.

Доверяйте значениям, полученным во время выполнения.

Текущая документация гласит:

Существует один пул потоков на процесс. Размер пула потоков по умолчанию 250 рабочих потоков на каждый доступный процессор и 1000 I / O завершения нитки.

2 голосов
/ 16 августа 2010

Этот метод возвращает количество потоков, которые МОГУТ быть запущены, а не то, что в данный момент выполняется. Информация о том, что максимум составляет 25, устарела. Я не уверен, какая версия, но ограничения пула потоков были значительно увеличены, чтобы избежать проблем взаимоблокировки, в основном из-за того, что разработчики не знают, что они делают, ИМХО.

...