powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Critical Section vs TMonitor
9 сообщений из 34, страница 2 из 2
Critical Section vs TMonitor
    #40025583
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp, LockFree всякие придумывают
...
Рейтинг: 0 / 0
Critical Section vs TMonitor
    #40025618
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cptngrb
alekcvp, LockFree всякие придумывают

Ну очереди да, но вот именно с объектами это слишком сложно, как по мне. Всё равно какое-то действие должно быть первично - или чтение или удаление.
Я, например, делаю Lock, копирую объект, потом Unlock и работаю с копией.
...
Рейтинг: 0 / 0
Critical Section vs TMonitor
    #40025759
Фотография Maxim Rusov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmSer
Похоже, цикл спин-блокировки для крит. секции происходит без переключения в режим ядра.

Так в твоем тесте ни одной блокировки и нет. Все что ты померил - это разные способы вызова InterlockedIncrement.
...
Рейтинг: 0 / 0
Critical Section vs TMonitor
    #40025780
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Rusov
DmSer
Похоже, цикл спин-блокировки для крит. секции происходит без переключения в режим ядра.

Так в твоем тесте ни одной блокировки и нет. Все что ты померил - это разные способы вызова InterlockedIncrement.


Вот именно! Это я и мерил. С блокировкой и тестов не нужно, итак понятно что в Microsoft не дураки работают с кодом планировщика, лучше чем у них сделать весьма сложно.
...
Рейтинг: 0 / 0
Critical Section vs TMonitor
    #40025806
Фотография Maxim Rusov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmSer,

Ну и смысл? Самое интересное начинается как раз когда блокировка происходит...
...
Рейтинг: 0 / 0
Critical Section vs TMonitor
    #40025876
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Rusov
DmSer,

Ну и смысл? Самое интересное начинается как раз когда блокировка происходит...


Когда происходит блокировка, самое интересное, насколько быстро ожидающий поток отреагирует на снятие блокировки. Тут всё в дело идёт: и спин и SwitchToThread и Sleep(0) и Sleep(>0) и Эвент.
Если ожидающий поток находится на этапе Sleep(>0), то реакция на разблокировку ресурса будет самой медленной. Не понятно, зачем нужно использовать Sleep(>0), лучше сразу встать на ожидание через Эвент.
...
Рейтинг: 0 / 0
Critical Section vs TMonitor
    #40026015
Фотография Maxim Rusov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmSer,

Там много тонкостей и реализовать можно сильно по разному.
- Является ли Lock "справедливым" (fair)
- Провоцирует ли он Starvation
- Провоцирует ли он Lock Convoy

Даже в Windows код критической секции менялся от версии к версии. Раньше она была Fair, потом от этого отказались...
...
Рейтинг: 0 / 0
Critical Section vs TMonitor
    #40026277
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Очень хорошо написано про Monitor в статье на хабре. Правда для C#. Но аналогия практически 100%.
Становится понятно, что TMonitor это попытка скопировать механизм Monitor из C#.
К сожалению, не хватает в delphi синтаксического сахара, подобного lock() {}. Приходится городить огород из try..finally.
...
Рейтинг: 0 / 0
Critical Section vs TMonitor
    #40026282
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересно, кто-нибудь использует TMonitor.Wait и TMonitor.Pulse?
Лично мне их идея не понравилась. Крайне сложно читать такой код!
...
Рейтинг: 0 / 0
9 сообщений из 34, страница 2 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Critical Section vs TMonitor
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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