Установите максимальное количество потоков в пуле потоков меньше, чем в ядрах - PullRequest
2 голосов
/ 16 марта 2011

"Вы не можете установить число рабочих потоков или количество потоков завершения ввода-вывода меньше числа процессоров на компьютере." *)

Что если мне нужно иметь меньше потоков (я использую ресурс, который не поддерживает более 4 потоков от одного процесса)? Есть ли способ установить максимум до 4 для 8-ядерный блок? Я использую Задачи в C #.

Ответы [ 3 ]

2 голосов
/ 16 марта 2011

Похоже, вам следует попытаться ограничить количество потоков, имеющих доступ к этому ресурсу, а не общее количество потоков, которое может быть сделано с помощью блокировки или билетов

0 голосов
/ 13 июня 2012

только что попробовал это, и это "требование" кажется неправильным. я считаю, что он просто устанавливает MinThreads на число ядер на вашей машине по умолчанию. если я сделаю это:

ThreadPool.SetMinThreads(1, 1);
ThreadPool.SetMaxThreads(2,2);

на машине QuadCore, кажется, что она должным образом ограничивает выполнение потока, но если я пропускаю вызов SetMinThreads, он игнорирует мой вызов SetMaxThreads (так как вы не можете установить MaxThreads меньше MinThreads (который по умолчанию является # ядер) ))

0 голосов
/ 23 августа 2011

Да, у Microsoft есть такое требование, что количество потоков не может быть меньше числа процессоров.Больше информации здесь .

Мне интересно узнать, почему у Microsoft есть такое требование?Это должно быть безвредным, не так ли?Это требование не имеет смысла ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...