Пул потоков становится общим между доменами приложения?

Рассмотрите процесс, который создает несколько доменов приложения. Эти Домены приложения совместно используют тот же пул потоков? Если да, как это скоординировано между несколькими доменами приложения?

18
задан TAdhav 10 August 2010 в 09:01
поделиться

3 ответа

ThreadPool является общим для всех доменов приложений - так как это означает, что потоки могут в конечном итоге переключаться между доменами приложений (потенциально часто!), Для решения этой проблемы была предпринята работа по perf:

http: // blogs.msdn.com/b/ericeil/archive/2009/04/23/clr-4-0-threadpool-improvements-part-1.aspx

[...] Фактически, мы нарушаем это «правило» уже: начиная с .NET 3.5, CLR пул потоков поддерживает отдельные Очереди FIFO для каждого домена приложений в процесс, а также дополнительный независимый Очередь FIFO для «собственных» рабочих элементов например, поставленные в очередь хостом (ASP.net является основным пользователем этого особенность). Мы ходим по круговой системе между эти рабочие очереди, позволяющие каждому выполнить работу за некоторое время до переходя к следующему. [...]

Кстати, обратите внимание, что, строго говоря, ThreadPool больше не используется для всего процесса, поскольку среда CLR v4 позволяет загружать параллельно с V2, и каждый из них будет иметь собственный пул потоков.

10
ответ дан 30 November 2019 в 09:18
поделиться

Пул потоков разделяется между всеми доменами приложений, поскольку каждый поток пула потоков не зависит от контекста, а весь профиль времени выполнения пула потоков сильно зависит от оборудования, на котором вы работаете (количество процессов, гиперпоточность и т. Д.)

Есть один пул потоков на процесс. Пул потоков имеет размер по умолчанию 25 потоков на доступный процессор. Количество потоков в потоке пул можно изменить с помощью SetMaxThreads метод. Каждый поток использует размер стека по умолчанию и выполняется в приоритет по умолчанию.

Источник: http://msdn.microsoft.com/en-us/library/system.threading.threadpool.aspx

Если я правильно помню, CLR обрабатывает потоки пула потоков внутри и очищает поток контекст перед обслуживанием другого запроса на работу.

5
ответ дан 30 November 2019 в 09:18
поделиться

Не уверен на 100%, но я думаю, что пул потоков один раз для каждого процесса, а не один раз для каждого домена приложения. Посмотрите эту статью о потоке и домене приложения :

0
ответ дан 30 November 2019 в 09:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: