2012-06-19 14 views
18

Sto facendo qualche ricerca sullo sviluppo di applicazioni thread-safe. So che gli utenti possono utilizzare più thread sulla stessa applicazione (se la CPU lavora con più thread), ma non sono sicuro di cosa succede e di come IIS gestisce gli utenti quando per esempio ci sono 5 utenti che utilizzano la stessa applicazione.IIS attribuisce a ciascun utente connesso una discussione?

Cosa fa IIS, tutti gli utenti lavorano sullo stesso thread? o hanno un thread ciascuno, ad esempio?

Sono un principiante quando si tratta di IIS, quindi per favore abbiate pazienza con me. La mia domanda mi aiuterà a capire se ho bisogno di bloccare i metodi statici pubblici nel mio codice (dove la sicurezza del thread è importante).

+0

http://msdn.microsoft.com/en-us/library/ms525101(v=VS.90).aspx –

risposta

9

Ecco una buona lettura per iniziare - ASP.NET Thread Usage on IIS 7.5, IIS 7.0, and IIS 6.0. La cosa importante da ricordare - IIS non creerà thread per gli utenti, creerà thread per chiamate simultanee. E ovviamente dovresti creare metodi statici thread safe, se non sono puri.

+1

Non dimenticare lo stato della sessione può causare la serializzazione di chiamate simultanee dallo stesso utente. –

+0

vuol dire che i quadri di connessione persistenti, come [SignalR] (http://signalr.net) bloccherà un thread per utenti connessi? –

+0

questo è un buon collegamento – PeteH

4

Un utente (o, a rigor di termini, potrebbe) ha una sessione, ma non necessariamente ha un thread dedicato a loro. Se ci pensi, sarebbe una cosa selvaggiamente inefficiente da fare.

Suggerirei di iniziare a leggere le sessioni piuttosto che i thread se si vuole capire come funziona.

+0

Quindi posso dire questo; ogni utente riceve una sessione e ogni sessione può utilizzare una discussione (o più thread), se necessario. È corretto? –

+3

Questo è corretto ma non proprio l'intera immagine. Il punto che sto cercando di fare nella mia risposta originale è che per qualsiasi utente, fanno una richiesta e il sito web genera una risposta. Chiaramente alcuni thread sono necessari per soddisfare questa richiesta. Ma una volta che la risposta è stata fatta, cosa succede al thread? Non si blocca solo in offchance che l'utente farà un'altra richiesta. Viene riutilizzato da IIS per soddisfare le richieste di altre persone. Il lato "sessione" delle cose è il modo in cui iis riconosce un utente che ritorna (senza tenere i fili in agguato) – PeteH

+0

Questo significa anche che 2 sessioni (1 per ogni utente) non entreranno mai in conflitto se non hai implementato alcun multi-threading nel codice –

Problemi correlati