lock (this)
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 29.03.06 08:38
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Знаешь, что такое Очень Плохая Вещь?

ГВ>Это вот она:
СГ>>C#:
  System.Monitor.Enter(this);


Здравствуйте, Дарней, Вы писали:

Д> Вот придёт кому-то в голову синхронизироваться на этом же объекте, но в другом месте и в других целях — и всё, приплыли.


Ну, дуракам закон не писан. А Вы ещё спрашивали в чём разница между обычными языками (типа C#) и языками поддерживающими парадигму активных объектов (Active Oberon, Zonnon,...). Разница в том, что залочится в C# можно на любом (чужом) объекте (быть может, на ровном месте неожиданно заработав deadlock), а в Active Oberon — только на самом себе (только на this).

Лочиться только на самом себе логически следует из объединения ООП и многопоточности:
1) Все данные инкапсулированы внутри объектов.
2) Доступ к любым данным осуществляется только с помощью методов объекта.
3) Для синхронизированного (эксклюзивного) доступа к данным используются эксклюзивные методы (т.е такие методы, блоки кода в которых залочены на this).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.