Lock (X) против блокировки (typeof (X)) В чем разница между блокировкой типа класса и блокировкой самого класса? Например: private readonly object xmpp = new object(); lock (xmpp) { ... } против lock (typeof(Xmpp)) { ... } Ответ 1 lock(x) синхронизируется с другой блокировкой для каждого экземпляра типа lock(typeof(X)) синхронизирует одну и ту же блокировку для всех экземпляров типа Всегда блокировать частный объект блокировки: public class X { private readonly Object _lock = new Object(); // ... lock (_lock) { } Если вы должны синхронизировать доступ к элементам класса static, используйте один и тот же шаблон: public class X { private readonly static Object s_lock = new Object();
Ответ 1 lock(x) синхронизируется с другой блокировкой для каждого экземпляра типа lock(typeof(X)) синхронизирует одну и ту же блокировку для всех экземпляров типа Всегда блокировать частный объект блокировки: public class X { private readonly Object _lock = new Object(); // ... lock (_lock) { } Если вы должны синхронизировать доступ к элементам класса static, используйте один и тот же шаблон: public class X { private readonly static Object s_lock = new Object();