Версия 7.7 от Alexandr Fokin на 2026/05/17 10:38

Последние авторы
1 |(% style="width:196px" %) |(% style="width:1286px" %)[[Про передачу сигнала на процесс>>doc:Проекты и репозитории.Библиотеки.Движок cccc1808\. ProcessEngine.Про передачу сигнала на процесс.WebHome]] (2.3)
2 |(% style="width:196px" %)Схема конкурентного взаимодействия между триггером и процессом.|(% style="width:1286px" %)(((
3 (% style="width:1060px" %)
4 |(% style="width:183px" %)Решаемые задачи|(% style="width:955px" %)(((
5 1. Избежание избыточных блокировок и избыточных ожиданий блокировок.
6 11. Триггер не пытается взять блокировку над процессом лишний раз, если процесс выполняется.
7 (Информация о выполнении процесса считывается из Wakeup state (без взятия блокировки процесса). Если процесс выполняется, то сигнал считается доставленным и никаких обновлений не требуется).
8 11. Гарантированная доставка сигнала от триггера до процесса (сигнал не будет потерян) и процесс будет пробужден и продолжит выполнение (Синхронизация проверки условия Wakeup condition, гарантия что сигнал не будет утерян).
9 11. Конкуренция между триггерами и процессом.
10
11
12 Решает 2 задачи:
13 1) Информация о выполнении процесса считывается из Wakeup state (без взятия блокировки процесса). Если процесс выполняется, то сигнал считается доставленным и никаких обновлений не требуется.
14 2) Синхронизация проверки условия Wakeup condition, гарантия что сигнал не будет утерян.
15 В конце сессии обработки процесса Wakeup state блокируется и только после этого проверяется условие наличие новых сигналов Wakeup condition, это гарантирует что ни один поступивший сигнал не будет утерян.
16
17 Такой подход позволяет минимизировать ожидание на блокировках.
18 )))
19 |С|(% style="width:791px" %)[[image:Конкурентная доставка сигнала в процесс.Sequence.png]]
20 |(% style="width:183px" %) |(% style="width:955px" %)
21 |(% style="width:183px" %) |(% style="width:955px" %)
22
23
24 )))
25 |(% style="width:196px" %) |(% style="width:1286px" %)
26
27