Domanda

Guardando l'elemento processmodel in Web.Config ci sono due attributi.

maxWorkerThreads="25" 
maxIoThreads="25"

Qual è la differenza tra thread di lavoro e thread di I / O?

È stato utile?

Soluzione

Fondamentalmente non molto, è tutto su come ASP.NET e IIS allocano gli oggetti I / O wait e gestiscono la contesa e la latenza della comunicazione sulla rete e del trasferimento dei dati.

I thread I / O sono accantonati come tali perché eseguiranno I / O (come suggerisce il nome) e potrebbe essere necessario attendere "long". periodi di tempo (centinaia di millisecondi). Inoltre, possono essere ottimizzati e utilizzati in modo diverso per sfruttare la funzionalità della porta di completamento I / O nel kernel di Windows. Un singolo thread I / O potrebbe gestire più porte di completamento per mantenere il throughput.

Windows ha molte funzionalità per gestire il blocco degli I / O, mentre ASP.NET/.NET ha un semplice concetto di " Thread " ;. ASP.NET può ottimizzare per l'I / O utilizzando più funzionalità di threading non gestito nel sistema operativo. Non vorrai farlo sempre per ogni thread poiché perdi molte funzionalità che .NET ti offre, motivo per cui esiste una distinzione tra il modo in cui i thread sono destinati a essere utilizzati.

I thread di lavoro sono thread su cui regolare "lavoro" o accade semplicemente codice / elaborazione. È improbabile che i thread di lavoro si blocchino molto o attendano qualsiasi cosa e avranno una corsa breve e pertanto richiedono una pianificazione più aggressiva per massimizzare la potenza di elaborazione e la velocità effettiva.

[Modifica]: ho trovato anche questo link che è particolarmente rilevante per questa domanda: http: / /blogs.msdn.com/ericeil/archive/2008/06/20/windows-io-threads-vs-managed-io-threads.aspx

Altri suggerimenti

Solo per aggiungere ai chadmyers ... Sembra che I / O Threads fosse il vecchio modo in cui ASP.NET gestiva le richieste,

  

" Le richieste in IIS 5.0 sono in genere   revisionato su thread I / O o thread   eseguire I / O asincroni perché   le richieste vengono inviate al lavoratore   processo che utilizza scritture asincrone in a   named pipe. "

con IIS6.0 questo è cambiato.

  

" Pertanto, tutte le richieste sono ora gestite da   thread di lavoro estratti dal CLR   pool di thread e mai su thread I / O. "

Fonte: http://msdn.microsoft.com /hi-in/magazine/cc164128(en-us).aspx

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top