Qual é a diferença entre um segmento de trabalho e um fio I / O?
-
02-07-2019 - |
Pergunta
Olhando para o elemento processModel no Web.Config há dois atributos.
maxWorkerThreads="25"
maxIoThreads="25"
O que é a diferença entre segmentos de trabalho e I / O tópicos?
Solução
Fundamentalmente não muito, é tudo sobre como ASP.NET e IIS alocar I / O de espera objetos e gerenciar a contenção e latência de se comunicar através da rede e transferência de dados.
tópicos I / O são postas de lado, como tal, porque eles vão estar fazendo I / O (como o nome indica) e pode ter que esperar por "longos" períodos de tempo (centenas de milissegundos). Eles também podem ser optimizados e utilizado de forma diferente para tirar proveito de I / O funcionalidade de porta de conclusão no núcleo do Windows. Um segmento de E / S só pode ser gerir múltiplas portas de conclusão para manter a taxa de transferência.
O Windows tem um monte de recursos para lidar com I / O bloqueio enquanto ASP.NET/.NET tem um conceito simples de "Thread". ASP.NET pode otimizar para I / O usando mais das capacidades de threading não gerenciados no OS. Você não iria querer fazer isso o tempo todo para cada segmento como você perde um monte de recursos que o .NET dá-lhe que é por isso que há uma distinção entre a forma como os fios são destinados a ser utilizados.
tópicosTrabalhadores são tópicos sobre a qual o "trabalho" regular ou apenas código plain / processamento acontece. threads de trabalho não são susceptíveis de bloquear um monte ou esperar em qualquer coisa e será curta corrida e, portanto, requerem programação mais agressiva para maximizar o poder de processamento e rendimento.
[Edit]: Eu também encontrei este link que é particularmente relevante para esta pergunta: http: / /blogs.msdn.com/ericeil/archive/2008/06/20/windows-io-threads-vs-managed-io-threads.aspx
Outras dicas
Apenas para adicionar a chadmyers ... Parece que eu / O Threads era a velha maneira ASP.NET atendido pedidos,
"Os pedidos no IIS 5.0 são tipicamente atendido mais I / O threads, ou tópicos realizando assíncrono / S porque os pedidos são despachados para o trabalhador processar usando gravações assíncronas para um pipe nomeado. "
com IIS6.0 isso mudou.
"Assim, todos os pedidos são agora servidos por threads de trabalho tirados do CLR pool de threads e nunca em I / O threads. "
Fonte: http://msdn.microsoft.com /hi-in/magazine/cc164128(en-us).aspx