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