Duplicar posibles:
What are the differences between various threading synchronization options in C#?monitor vs objeto mutex en C#
¿Cuál es la diferencia entre un monitor y un mutex en C#?
¿Cuándo usar un monitor y cuándo usar un mutex en C#?
Duplicar posibles:
What are the differences between various threading synchronization options in C#?monitor vs objeto mutex en C#
¿Cuál es la diferencia entre un monitor y un mutex en C#?
¿Cuándo usar un monitor y cuándo usar un mutex en C#?
Un Mutex puede compartirse entre procesos y es mucho más pesado que un Monitor.
Utilice un monitor a menos que necesite sincronizar a través de los límites del proceso.
A Monitor
se maneja, y es más liviano, pero se limita a su AppDomain
. Se puede nombrar un Mutex
, y puede abarcar procesos (lo que permite algunos escenarios simples de IPC entre aplicaciones) y se puede usar en código que quiere un controlador de espera).
Para la mayoría de los escenarios simples, Monitor
(a través de lock
) está bien.
Una buena fuente de asesoramiento sobre este tema es el "Enhebrado en C#" de Joseph Albahari. Todo el contenido está disponible en línea. En mi opinión, vale la pena leer the whole book, pero yo puede comprobar estas partes:
En Mutex.
A pesar de que no cubre .NET 4.0 new parallel constructs, es un muy buen punto de partida.
Actualización: El libro ha sido actualizado. Ahora, cubre .NET 4.0 Parallel Programming en su part 5.
http://stackoverflow.com/questions/301160/what-are-the-differences-between-various-threading-synchronization-options-in-c – joe
Estoy de acuerdo con el uso de bloqueo por defecto, pero debe llamar Monitor.Ingrese/Salga si 1) se requiere un tiempo de espera o 2) si el alcance de bloqueo no está restringido a un solo método por algún motivo. –
Como nota adicional, los monitores proporcionan lo que a menudo se denominan "variables de condición" con sus métodos de espera/impulso. Permite que un hilo espere algo hasta que otro hilo llame a Pulse en el monitor. – nos