TaskCreationOptions.LongRunning option и ThreadPool - PullRequest
24 голосов
/ 24 июня 2010

TPL использует планировщики задач для координации задач.Согласно официальному документу , планировщик задач по умолчанию использует пул потоков, но если опция TaskCreationOptions.LongRunning представлена, то он создаст выделенный поток для этой задачи (A).теперь документы MSDN для Visual Studio 2010 не готовы, а текущий сетевой MSDN не завершен;Кто-нибудь знает, является ли (A) истиной или ложью?

Ответы [ 2 ]

36 голосов
/ 24 июня 2010

Да, LongRunning принудительно создает новый поток вне пула.Вот некоторый псевдодемонтированный код из последней версии фреймворка:

...
if (task.Options HasFlag LongRunning) then
    create new Thread thread
    thread.Start(task)
...

Редактировать: преобразован из уродливого C # в псевдокод.

14 голосов
/ 24 июня 2010

Предположительно, вы можете проверить это с помощью "Thread.IsThreadPoolThread":

http://msdn.microsoft.com/en-us/library/system.threading.thread.isthreadpoolthread.aspx

...