votacion sobre onu informe cuba contra bloqueo c# multithreading locking thread-safety

c# - onu - informe de cuba sobre el bloqueo 2018



bloqueo(X) vs bloqueo(typeof(X)) (1)

¿Cuál es la diferencia entre el bloqueo en un tipo de una clase y el bloqueo en la clase en sí?

Por ejemplo:

private readonly object xmpp = new object(); lock (xmpp) { ... }

vs

lock (typeof(Xmpp)) { ... }


  • lock(x) sincroniza en un bloqueo diferente para cada instancia del tipo

  • lock(typeof(X)) sincroniza en el mismo bloqueo para todas las instancias del tipo

Bloqueo siempre en un objeto de bloqueo privado:

public class X { private readonly Object _lock = new Object(); // ... lock (_lock) { }

Si debe sincronizar el acceso a los miembros de la clase estática , use el mismo patrón:

public class X { private readonly static Object s_lock = new Object();