Я разрабатываю высокомасштабируемое приложение. Он будет иметь множество узлов обработки, которые получат задачи из общей очереди и обрабатывают их.Как узнать количество поставленных в очереди элементов в записях ThreadPool
Моя идея - иметь поток в каждом узле, который читает из очереди задач и запускает задачу для выполнения работы.
Моя проблема заключается в том, как ограничить количество поставленных задач в каждом узле, поскольку это зависит только от скорости потока, который создает задачу, а не от текущей загрузки узла. Как узнать количество поставленных в очереди элементов в ThreadPool? Как я могу выполнить справедливое распределение задач?
Спасибо за ваше время.
Взгляните на [это] (http://stackoverflow.com/questions/4410959/how-can-i-determine-the-number-of-items-in-threadpool-queue) – Zero
Что вы имеете в виду по «обрабатывающим узлам»? Если они всего лишь процессоры в одной системе с общей памятью, вам следует полагаться на планировщик по умолчанию библиотеки параллельных задач, который обрабатывает все эти проблемы для вас. – Douglas
Просто используйте Семафор/Слим. Call Wait() перед запуском задачи, Release(), когда задача завершена. Сколько недопустимых заданий вы указываете в конструкторе. –