Задача LongRunning побочные эффекты?

Если задание создается с использованием параметра LongRunning, есть ли побочные эффекты, так как они не используют ThreadPool

Ответ 1

Да. Побочным эффектом является то, что: если у вас есть миллион задач, вы можете создать миллион потоков.

Необходимо учитывать, что каждый поток будет иметь свои служебные данные и . Накладные расходы памяти не такие маленькие, мы говорим несколько MB здесь, даже с тысячами предметов, вы можете столкнуться с проблемами.

Ответ 2

Параметр LongRunning является подсказкой для планировщика, что означает, что он может выбрать выполнение Task в потоке без ThreadPool (если это будет пул потоков, поддерживаемый DefaultScheduler, он, скорее всего, будет). Один побочный эффект параметра LongRunning заключается в том, что для этой задачи запрещена задача Inlining. Это означает, что если LongRunning Задача создает другие вложенные или дочерние задачи и вызовы Wait для любой из этих задач, они всегда будут выполняться на другом потоке, а не быть вложенным (т.е. работать на том же потоке, выполняющем Wait).

В контексте ответов других людей стоит отметить, что при создании большого количества задач, которые занимают много времени, чтобы завершить без, подсказка LongRunning все еще может вызвать эскалацию числа потоков из-за алгоритма впрыска резьбы, который использует DefaultScheduler. Алгоритм не различает потоки в пуле, которые заблокированы, и те, которые работали с рабочим элементом в течение длительного времени, и в обоих случаях могут ответить, введя больше потоков в пул, чтобы попытаться увеличить рабочую пропускную способность.

Ответ 3

Задачи LongRunning указывают, что глобальные и локальные очереди будут обходить, чтобы предотвратить блокирование других потоков, следующих за ним в локальной очереди.

Это означает, что если у вас много заданий Long Running, это может создать больше потоков, чем обычно.

В ответах на этот вопрос вы можете увидеть некоторые из недостатков:

http://social.msdn.microsoft.com/Forums/en/parallelextensions/thread/8304b44f-0480-488c-93a4-ec419327183b