Задачи TPL, темы и т. Д. - PullRequest
       39

Задачи TPL, темы и т. Д.

1 голос
/ 29 декабря 2010

Может ли кто-нибудь объяснить мне, как эти вещи коррелируют:

Задача
Поток
Поток ThreadPool
Paraller.For / ForEach / Invoke

Т.е. при созданииЗадача и запустить ее, где он получает поток для выполнения?И когда я звоню Parallel. * Что на самом деле происходит под прикрытием?

Любые ссылки на статьи, посты в блогах и т. Д. Также очень приветствуются!

Ответы [ 2 ]

1 голос
/ 29 декабря 2010

Идеальное состояние системы - иметь 1 активно работающий поток на ядро ​​ЦП.Определяя работу в более общих терминах «задач», TPL может динамически решать, сколько потоков использовать и какие задачи выполнять в каждом из них, чтобы приблизиться к достижению этого идеального состояния.Это решения, которые почти всегда лучше всего принимать динамически во время выполнения, потому что при написании кода вы не можете точно знать, сколько ядер ЦП будет доступно вашему приложению, насколько они заняты другой работой и т. Д.

0 голосов
/ 29 декабря 2010

Поток: является реальным потоком ОС, имеет дескриптор и идентификатор.

ThreadPool: - это коллекция уже созданных потоков ОС. Эти потоки принадлежат / поддерживаются средой выполнения, и вашему коду разрешено «заимствовать» их только на некоторое время, вы можете выполнять только кратковременную работу в этих потоках и не можете ни изменять состояние потоков, ни удалять эти темы.

Лучшие предположения по этим двум:

Задача: может запускаться в предварительно созданном потоке в пуле потоков или может запускаться как часть планирования в пользовательском режиме, все это зависит от того, что среда выполнения считает лучшим. Другое предположение: в TPL планирование в пользовательском режиме НЕ основано на волокнах ОС, а является собственной полной (и работающей) реализацией.

Parallel.For: на самом деле, понятия не имею, как это реализовано. Среда выполнения может создавать новые потоки для выполнения параллельных битов или гораздо более вероятно использовать потоки пула потоков для параллелизма.

...