Possibile duplicato:
Quali sono le differenze tra le varie opzioni di sincronizzazione dei thread in C #?
Qual è la differenza tra un monitor e un mutex in C #?
Quando utilizzare un monitor e quando utilizzare un mutex in C #?
Un Monitor
è gestito e più leggero, ma è limitato AppDomain
. Un Mutex
può essere denominato e può estendersi su processi (consentendo alcuni semplici scenari IPC tra le applicazioni) e può essere utilizzato in codice che richiede un wait-handle).
Per gli scenari più semplici, Monitor
(tramite lock
) va bene.
Una buona fonte di consigli su questa roba è “Threading in C #” di Joseph Albahari. Tutto il contenuto è disponibile online. A mio parere, vale la pena leggere l’intero libro , ma puoi controllare queste parti:
Sul blocco (monitor C #) ;
Su Mutex .
Sebbene non copra i nuovi costrutti paralleli .NET 4.0 , è un ottimo punto di partenza.
Aggiornamento : il libro è stato aggiornato. Ora, copre .NET 4.0 Parallel Programming nella sua parte 5 .
Un mutex può essere condiviso attraverso i processi ed è molto più pesante di un monitor.
Utilizzare un monitor a meno che non sia necessario sincronizzare oltre i limiti del processo.