|
|
|
Critical Section vs TMonitor
|
|||
|---|---|---|---|
|
#18+
alekcvp, LockFree всякие придумывают ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2020, 14:02 |
|
||
|
Critical Section vs TMonitor
|
|||
|---|---|---|---|
|
#18+
cptngrb alekcvp, LockFree всякие придумывают Ну очереди да, но вот именно с объектами это слишком сложно, как по мне. Всё равно какое-то действие должно быть первично - или чтение или удаление. Я, например, делаю Lock, копирую объект, потом Unlock и работаю с копией. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2020, 15:08 |
|
||
|
Critical Section vs TMonitor
|
|||
|---|---|---|---|
|
#18+
DmSer Похоже, цикл спин-блокировки для крит. секции происходит без переключения в режим ядра. Так в твоем тесте ни одной блокировки и нет. Все что ты померил - это разные способы вызова InterlockedIncrement. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2020, 19:39 |
|
||
|
Critical Section vs TMonitor
|
|||
|---|---|---|---|
|
#18+
Maxim Rusov DmSer Похоже, цикл спин-блокировки для крит. секции происходит без переключения в режим ядра. Так в твоем тесте ни одной блокировки и нет. Все что ты померил - это разные способы вызова InterlockedIncrement. Вот именно! Это я и мерил. С блокировкой и тестов не нужно, итак понятно что в Microsoft не дураки работают с кодом планировщика, лучше чем у них сделать весьма сложно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2020, 20:50 |
|
||
|
Critical Section vs TMonitor
|
|||
|---|---|---|---|
|
#18+
DmSer, Ну и смысл? Самое интересное начинается как раз когда блокировка происходит... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2020, 22:52 |
|
||
|
Critical Section vs TMonitor
|
|||
|---|---|---|---|
|
#18+
Maxim Rusov DmSer, Ну и смысл? Самое интересное начинается как раз когда блокировка происходит... Когда происходит блокировка, самое интересное, насколько быстро ожидающий поток отреагирует на снятие блокировки. Тут всё в дело идёт: и спин и SwitchToThread и Sleep(0) и Sleep(>0) и Эвент. Если ожидающий поток находится на этапе Sleep(>0), то реакция на разблокировку ресурса будет самой медленной. Не понятно, зачем нужно использовать Sleep(>0), лучше сразу встать на ожидание через Эвент. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2020, 10:33 |
|
||
|
Critical Section vs TMonitor
|
|||
|---|---|---|---|
|
#18+
DmSer, Там много тонкостей и реализовать можно сильно по разному. - Является ли Lock "справедливым" (fair) - Провоцирует ли он Starvation - Провоцирует ли он Lock Convoy Даже в Windows код критической секции менялся от версии к версии. Раньше она была Fair, потом от этого отказались... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2020, 16:37 |
|
||
|
Critical Section vs TMonitor
|
|||
|---|---|---|---|
|
#18+
Очень хорошо написано про Monitor в статье на хабре. Правда для C#. Но аналогия практически 100%. Становится понятно, что TMonitor это попытка скопировать механизм Monitor из C#. К сожалению, не хватает в delphi синтаксического сахара, подобного lock() {}. Приходится городить огород из try..finally. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2020, 10:46 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=40025806&tid=2037794]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
150ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 283ms |
| total: | 506ms |

| 0 / 0 |
