Duplicata possible:
Quelles sont les différences entre les différentes options de synchronisation de threading en C #?
Quelle est la différence entre un moniteur et un Mutex en C #?
Quand utiliser un moniteur et quand utiliser un Mutex en C #?
Un Monitor
est géré et plus léger - mais est limité à votre AppDomain
. Un Mutex
peut être nommé et peut s'étendre sur des processus (permettant des scénarios simples IPC entre les applications), et peut être utilisé dans du code qui veut un handle d'attente).
Pour la plupart des scénarios simples, Monitor
(via lock
) convient.
Une bonne source de conseils à ce sujet est le "Threading in C #" de Joseph Albahari. Tout le contenu est disponible en ligne. À mon avis, cela vaut la peine de lire tout le livre , mais vous pouvez vérifier ces parties:
Activé Verrouillage (moniteur C #) ;
Le Mutex .
Bien qu'il ne couvre pas . NET 4.0 nouvelles constructions parallèles , c'est un très bon point de départ.
Mise à jour : le livre a été mis à jour. Maintenant, il couvre la programmation parallèle .NET 4.0 dans son partie 5 .
Un Mutex peut être partagé entre plusieurs processus et est beaucoup plus lourd qu'un moniteur.
Utilisez un moniteur, sauf si vous devez synchroniser au-delà des limites du processus.