Сколько пулов потоков в TPL? С каким-то непонятным вопросом, пришедшим мне в голову?
Привет Эксперты,
Я использую .Net на 5.0 и с помощью библиотеки параллельных задач (TPL).У меня есть некоторая путаница в управляемом пуле потоков, который использует TPL.
1)Сколько пулов потоков в машине, имеющей 4-ядерный процессор?Зависит ли количество пулов потоков от операционной системы, процессора или приложения ?
2 )Когда мы запускаем приложение либо консольное, либо оконное, либо веб-и т. д. затем они создают свой собственный пул потоков или используют существующий?
3) где глобальная очередь находится в пуле потоков или где-то еще?где находится локальная очередь?
сколько глобальных очередей и сколько локальных очередей, которые зависят от фабрики, подсчитывают это.?
4) Когда задача переходит в локальную очередь.? Каждая работа, которую рабочий поток берет из глобальной очереди, сначала добавляет в локальную очередь назначение рабочему потоку в пуле потоков или она выполняется непосредственно рабочим потоком.?
5) Почему кража работы выполняется из глобальной очереди в FIFO и локальной очереди в порядке LIFO, каковы преимущества?
Первые два вопроса меня очень смутили.Пожалуйста, помогите?..
Что я уже пробовал:
Картина, которая возникает у меня в голове после прочтения пары статей, такова.
для 4-х основных машин. здесь GQ= & gt;глобальная очередь
Базовый-1 Базовый-2 Базовый-3 Базовый-4
--- --------------- --- ---------- ----------- -----------
|Г| -------------------
|Вопрос|
--- /Пул потоков |=== = = = = >аналогичная структура.
-------------------
/ Рабочий поток-1..n|
--------------------
/ Рабочий поток имеет|
/ локальная очередь |
--------------------
Each core have own thread pool and thread pool have worker thread and worker thread have local queue which pick up task from global queue. <b>That's my imagination.</b>