¿Cuándo es apropiado usar la Monitor
clase o la lock
palabra clave para la seguridad de subprocesos en C #?
EDITAR:
Por las respuestas hasta ahora, parece que lock
es una forma abreviada de una serie de llamadas a la Monitor
clase. ¿Para qué sirve exactamente la llamada de bloqueo? O más explícitamente,
class LockVsMonitor
{
private readonly object LockObject = new object();
public void DoThreadSafeSomethingWithLock(Action action)
{
lock (LockObject)
{
action.Invoke();
}
}
public void DoThreadSafeSomethingWithMonitor(Action action)
{
// What goes here ?
}
}
Actualizar
Gracias a todos por su ayuda: he publicado otra pregunta como seguimiento de parte de la información que todos proporcionaron. Dado que parece estar bien versado en esta área, he publicado el enlace: ¿Qué tiene de malo esta solución para bloquear y administrar excepciones bloqueadas?