Параметры TaskCreationOptions.LongRunning и ThreadPool
TPL использует Task Schedulers для координации задач. Согласно официальному документу планировщик задач по умолчанию использует пул потоков, но если представлен параметр TaskCreationOptions.LongRunning
, то он создаст выделенный поток для этой задачи (А).
Вопрос: На данный момент документы MSDN для Visual Studio 2010 не готовы, и текущая онлайн-MSDN не завершена; Кто-нибудь знает, если (A) истинно или ложно?
Ответы
Ответ 1
Да, LongRunning
заставляет создать новый поток вне пула. Вот какой-то псевдоразборный код из последней версии фреймворка:
...
if (task.Options HasFlag LongRunning) then
create new Thread thread
thread.Start(task)
...
Изменить: преобразован из уродливого С# в псевдокод.
Ответ 2
Предположительно вы можете проверить это, используя "Thread.IsThreadPoolThread":
http://msdn.microsoft.com/en-us/library/system.threading.thread.isthreadpoolthread.aspx