Подтвердить что ты не робот

(Как) Использует ли TPL пул потоков (CLR)?

В настоящее время я изучаю параллельную библиотеку задач, и я где-то читал, что TPL фактически использует механизм пула потоков из CLR-уровня. Я не мог найти статью, подтверждающую эту информацию. Я знаю, TPL имеет очереди задач для каждого потока и использует некоторый специальный алгоритм обработки работы для балансировки. Насколько мне известно, он создает один поток для каждого процессора. Пулы потоков начали использовать объекты задач TPL с .NET 4.

Я не понимаю, как TPL использует пул потоков. В шаблоне Thread-Pool указано, что рабочие элементы поставлены в очередь, а свободные потоки в пуле потоков берут один из этой очереди. Тем не менее, TPL сохраняет элементы (задачи) в очереди потоков и рабочие кражи, если это необходимо... Таким образом, совершенно по-другому. Где моя ошибка?

дополнительный вопрос: поскольку это был мой первый вопрос о переполнении стека, я не уверен, что он подходит. Это?

4b9b3361

Ответ 1

В TPL, TaskScheduler отвечает за то, что он действительно поставил задачи на выполнение. В планировщике Default будет использоваться пул потоков, но я считаю, что это новая реализация пула потоков, которая на самом деле делает хитрость в работе.

У Даниэля Мота есть сообщение в блоге с более подробной информацией, которую вы можете найти полезной.