powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Lock
25 сообщений из 35, страница 1 из 2
Lock
    #39729847
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В каноничных примерах ( тут или тут ) для блокировки числового поля используется дополнительный объект, а если поле объектное, то можно ли его самого в Lock воткнуть?
...
Рейтинг: 0 / 0
Lock
    #39729852
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

Блокируется кусок кода между скобками. Другой поток встанет на скобке и будет ждать.
...
Рейтинг: 0 / 0
Lock
    #39729861
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

можно, но не нужно, пару байт жалко?
лучше сделать поле с объектом синхронизации\блокировки private readonly, как мне кажется, в большинстве случаев
...
Рейтинг: 0 / 0
Lock
    #39729866
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Lock
    #39729873
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesAntonariy,

можно, но не нужно, пару байт жалко?не мне. я сейчас работаю в таком месте, где докапываются даже до кошерного переноса =>

то есть

void xxx() =>
yyy();

не правильно, а

void xxx()
=> yyy();

правильно.

вот и насчет блокировки примерно такая же ерунда.
...
Рейтинг: 0 / 0
Lock
    #39729922
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesAntonariy,

можно, но не нужно, пару байт жалко?
лучше сделать поле с объектом синхронизации\блокировки private readonly, как мне кажется, в большинстве случаев
Это не пара байт, а прикручивание к каждому блокируемому объекту прилипалы
...
Рейтинг: 0 / 0
Lock
    #39729939
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosRoman MejtesAntonariy,

можно, но не нужно, пару байт жалко?
лучше сделать поле с объектом синхронизации\блокировки private readonly, как мне кажется, в большинстве случаев
Это не пара байт, а прикручивание к каждому блокируемому объекту прилипалы
в процессе выполнения указатель может поменяться, а у private readonly object'а поля он гарантированно постоянный
...
Рейтинг: 0 / 0
Lock
    #39729969
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyВ каноничных примерах ( тут или тут ) для блокировки числового поля используется дополнительный объект, а если поле объектное, то можно ли его самого в Lock воткнуть?
Все зависит от конкретной ситуации.
...
Рейтинг: 0 / 0
Lock
    #39729999
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtesв процессе выполнения указатель может поменяться, а у private readonly object'а поля он гарантированно постоянный
Неужто прямо у объекта под Lock поменяют указатель и при том не поменяют в таблице локов?
Дебилы что ли?
Где это написано?
...
Рейтинг: 0 / 0
Lock
    #39730104
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy для блокировки числового поля используется дополнительный объект, а если поле объектное, то можно ли его самого в Lock воткнуть?
использовать не блокирующую синхронизацию, локами из пушки по воробьям
...
Рейтинг: 0 / 0
Lock
    #39730119
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Lock
    #39730121
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи,

Интересный момент стоимость локов.
Если за ресурс нет конкуренции то лок в два раза медленней чем interlocked Exchange.
Если изменения затрагивают только одно машинное слово - то интрлок быстрее.
Но обычно всё же необходимы измененя в нескольких словах, и вот тут уже ситуация меняется: уже два интерлока медленнее (не быстрее) чем один лок потому что сбрасывают две линии прцессорного кэша.

Выбор оптимальной парадигмы для синхронизации очень не прост,
но обобщённо утверждать локи - пушка я бы не стал.
С учётом теннденций в ИТ к дешевизне с приемлемыми потерями в качестве - локи лучше.
Лучше медленно но верно чем быстро но иногда. :)
...
Рейтинг: 0 / 0
Lock
    #39730124
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikron,
согласен, сам грешу шлепнешь бывало synchronized и попер дальше, но залочить доступ к числовому полю, как то рука не поднимется даже всуе...
...
Рейтинг: 0 / 0
Lock
    #39730245
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyВ каноничных примерах ( тут или тут ) для блокировки числового поля используется дополнительный объект, а если поле объектное, то можно ли его самого в Lock воткнуть?
Для таких типов, как в примере по первой ссылке (class Account), и, соответственно в таких методах (Debit/Credit), не заморачиваясь лочу сам объект (lock (this)), в более сложных типах иногда приходится использовать несколько мютексов (тогда, в соотв.методах lock (mutex1)/lock (mutex2)/lock (mutexN)). Для коллекций использую то что Сон Веры Павловны прописал - ICollection.SyncRoot (стоит лишь одного using-a System.Collections)
...
Рейтинг: 0 / 0
Lock
    #39730250
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степино залочить доступ к числовому полю, как то рука не поднимется даже всуе...
а к локальной переменной в методе (как к самой потоконезащищенной сущности)?
...
Рейтинг: 0 / 0
Lock
    #39730256
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LRГде-то в степино залочить доступ к числовому полю, как то рука не поднимется даже всуе...
а к локальной переменной в методе (как к самой потоконезащищенной сущности)?

У каждого потока (Thread) свой стэк выполнения, и соотв локальная переменная метода для каждого потока своя.
Во-вторых, компилятор может соптимизировать так, что локальной переменной не будет вовсе как объекта в памяти, к чему тогда лочить доступ?
...
Рейтинг: 0 / 0
Lock
    #39730349
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LRГде-то в степино залочить доступ к числовому полю, как то рука не поднимется даже всуе...
а к локальной переменной в методе (как к самой потоконезащищенной сущности)?
все наоборот :)
...
Рейтинг: 0 / 0
Lock
    #39730378
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PallarisLRпропущено...

а к локальной переменной в методе (как к самой потоконезащищенной сущности)?

У каждого потока (Thread) свой стэк выполнения, и соотв локальная переменная метода для каждого потока своя.
Во-вторых, компилятор может соптимизировать так, что локальной переменной не будет вовсе как объекта в памяти, к чему тогда лочить доступ?
Да, действительно, что-то не то ляпнул, виноват)) Но "залочить доступ к числовому полю" (type member) все же нужно, рука должна подниматься))
...
Рейтинг: 0 / 0
Lock
    #39730387
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LRНо "залочить доступ к числовому полю" (type member) все же нужно, рука должна подниматься))если оно одинокое) то зачем?
...
Рейтинг: 0 / 0
Lock
    #39730403
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123LRНо "залочить доступ к числовому полю" (type member) все же нужно, рука должна подниматься))если оно одинокое) то зачем?
теперь расшифруй поток ботосознания
...
Рейтинг: 0 / 0
Lock
    #39730486
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosPetro123пропущено...
если оно одинокое) то зачем?
теперь расшифруй поток ботосознанияэллочке-людоедке зачем расшифровывать.
...
Рейтинг: 0 / 0
Lock
    #39731027
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyВ каноничных примерах ( тут или тут ) для блокировки числового поля используется дополнительный объект, а если поле объектное, то можно ли его самого в Lock воткнуть?

Можно-то можно.
Но не нужно :)
...
Рейтинг: 0 / 0
Lock
    #39732598
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Распараллеливаю код, который разными функциями наполняет разные поля у записей в одной коллекции. Коллекция не меняется, потоки гарантированно не будут менять одни и те же поля, и даже тут пишут, что все ок: https://stackoverflow.com/questions/28641283/multiple-threads-accessing-a-single-object-but-without-data-contention-in-c-shar

Однако второй камент какой-то противоречивый. В первой части говорит, что хреновая идея тут потокобезопасность наворачивать, а во второй, что таки давайте.

А что МСДН по этому поводу говорит? Я не нашел ничего подходящего по смыслу.
...
Рейтинг: 0 / 0
Lock
    #39732607
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

Да при чем тут МСДН? Если ты уверен, что нет конкуренции, то и не о чем думать.
...
Рейтинг: 0 / 0
Lock
    #39732621
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,
Технически нет проблем. Опасность в архитектуре когда объединяют поля в класс, а поля совершено не зависят друг от друга.
...
Рейтинг: 0 / 0
25 сообщений из 35, страница 1 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Lock
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]