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?

Foi útil?

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ópicos

Trabalhadores 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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top