![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| nmn |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 593 Регистрация: 26.11.2005 Репутация: 1 Всего: 1 |
не совсем понимаю назначение obj в lock(obj)
объясните Это сообщение отредактировал(а) nmn - 6.1.2009, 02:06 |
|||
|
||||
| Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 18 Всего: 67 |
nmn, это объект синхронизации...
lock пытается его заблокировать... если не получилось, то значит объект уже кем-то заблокирован, и надо подождать его освобождения.. -------------------- СУВ, Partizan. |
|||
|
||||
| nmn |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 593 Регистрация: 26.11.2005 Репутация: 1 Всего: 1 |
т.е. такая запись навсегда заблокирует поток?
|
|||
|
||||
| HalkaR |
|
|||
![]() Пуфыстый назгул ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2132 Регистрация: 8.12.2002 Где: В Москве Репутация: 14 Всего: 42 |
nmn, нет, в lock есть обработка такой ситуации. Там используется счетчик входов и выходов.
|
|||
|
||||
| nmn |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 593 Регистрация: 26.11.2005 Репутация: 1 Всего: 1 |
что за счетчик? можно поподробнее?
|
|||
|
||||
| HalkaR |
|
|||
![]() Пуфыстый назгул ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2132 Регистрация: 8.12.2002 Где: В Москве Репутация: 14 Всего: 42 |
Самый обычный счетчик - сколько раз залочили переменную, сколько раз разлочили. Если равно, то все свободны.
|
|||
|
||||
| nmn |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 593 Регистрация: 26.11.2005 Репутация: 1 Всего: 1 |
влияет ли lock на что то кроме того что при встрече lock в другом потоке, тот приостанавливается до разблокирования объекта?
|
|||
|
||||
| mihryak |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 19 Всего: 36 |
подразумевается ведь, что там лочится тот же объект? тогда по сути - нет, лок - это синаксический сахар над Monitor ну и на скорость немного влияет
такая запись грозит суровым разговором с начальством this лочить нельзя |
||||
|
|||||
| QryStaL |
|
|||
![]() Intellectual feast ![]() ![]() Профиль Группа: Участник Сообщений: 914 Регистрация: 30.11.2005 Репутация: 14 Всего: 32 |
Присоединюсь к мнению, что this лочить нельзя. А по поводу вопроса - нет, не заблокирует, так как там стоит счетчик входов в lock. Когда он становится равным 0, объект освобождается. -------------------- I don't need a reason being who I am... |
|||
|
||||
| Skynin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 359 Регистрация: 1.7.2007 Где: Харьков Репутация: 1 Всего: 10 |
lock - это спрятанный Monitor.Enter(myObj)
Конец блока lock (или return, continue из него) - это Monitor.Exit(myObj) Методы статические, то есть в недрах класса Monitor хранится список заблокированных объектов. Когда поток запрашивает Monitor.Enter(myObj) то Monitor остановит выполнение если для myObj где либо не было сделано Monitor.Exit(myObj) this лочить - можно. Но опастно, потому что если снаружи залочить объект, то внутри него все локи тоже заблокируются, Monitor то статический класс. Например
|
|||
|
||||
| mihryak |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 19 Всего: 36 |
||||
|
||||
| Skynin |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 359 Регистрация: 1.7.2007 Где: Харьков Репутация: 1 Всего: 10 |
Я просто не люблю слово - нельзя.
"Простые люди соблюдают законы из страха. Философы соблюдают эти же законы из понимания их необходимости" (Сократ, по памяти). Я и попытался вместо запугивания "нельзя" показать почему не стоит хотя можно. Правила форума нарушил? Где-то в моем постинге обман? Это сообщение отредактировал(а) Skynin - 16.1.2009, 17:50 |
||||
|
|||||
| mihryak |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 19 Всего: 36 |
||||
|
||||
| HalkaR |
|
|||
![]() Пуфыстый назгул ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2132 Регистрация: 8.12.2002 Где: В Москве Репутация: 14 Всего: 42 |
mihryak, Skynin, "вы что такие серьезные?" (Джокер, по памяти).
Расслабьтесь - все же поняли идею. |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |