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

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

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

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

12
задан eks 26 December 2010 в 17:59
поделиться