2009-07-22 13 views
59

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#?

+0

http://stackoverflow.com/questions/301160/what-are-the-differences-between-various-threading-synchronization-options-in-c – joe

+0

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. –

+0

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

Respuesta

14

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.

39

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.

16

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:

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.