Подтвердить что ты не робот

Разделяет ли threadpool между областями приложений?

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

Пул потоков распространяется между всеми доменами приложения, поскольку каждый поток потока потока является контекст-агностиком, а весь профиль runpool runtime сильно зависит от используемого оборудования (# of procs, hyperthreading и т.д.)

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

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

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

Ответ 3

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