2009-05-21 4 views
8

Возможные Дубликаты:
Why is lock(this) {...} bad?Почему лучше заблокировать (objLock), чем замок (это)


В C# это обычно используют замок (objLock) где objLock является объект, созданный просто с целью блокировки.

Почему это предпочтительнее блокировать (это)? Каковы негативные последствия блокировки (это), кроме как блокировки самого класса?

ответ

15

Поскольку что-то еще может заблокировать экземпляр, тогда у вас будет тупик.

Если вы заблокировали объект, который вы создали специально для этой цели, вы знаете, что у вас полный контроль, и ничто другое не будет блокировать его неожиданно.

+1

Экземпляры, не класс. – Shog9

+0

Sloppy меня. Правильно отредактирован. –

+0

Это особенность, а не ошибка! Что еще класс хочет получить эксклюзивный доступ именно к этому экземпляру? – Andy

2

Если вы заблокируете что-либо публичное, то и класс, и какой-то другой класс могут попытаться получить блокировку. Достаточно легко создать объект синхронизации и всегда предпочтительнее;

private syncLock = new Object(); 
Смежные вопросы