Исходный код вики Оптимистичная блокировка

Версия 1.8 от Alexandr Fokin на 2022/12/12 11:32

Последние авторы
1 ----
2
3 1. Берем элемент (не блокируя) (фиксируем version/timestamp)
4 1. Производим обработку.
5 1. Атомарно проверяем, что version/timestamp не изменился. (иначе ошибка/повторная обработка/игнорирования, что исходные данные изменились с момента начала обработки)
6 1. Сохраняем элемент.
7
8 ----
9
10 Compare and swap (CAS)
11
12 ----
13
14 Плохо подходит для ситуации, когда ресурс блокируется часто (плохо работает, приводит к повышенной нагрузке вычислений т.к. постоянно перевыполняется блок обработки). Предполагается, что ресурс не будет изменен за время выполнения операции.
15 Не подходит для операций, которые не являются идемпотентными (например запросы во внешние сервисы).
16 В некоторых случаях может использовать для управления отсоединенными данными (Предполагая, что данные в основном хранилище либо не будут изменены, либо изменение отсоединенных данных будет отброшено, либо существование механизма слияния изменений основного хранилища и отсоединенного данных).
17
18 ----
19
20 ==== Внутренние ссылки: ====
21
22 ====== Дочерние страницы: ======
23
24 {{children/}}
25
26 ====== Обратные ссылки: ======
27
28 {{velocity}}
29 #set ($links = $doc.getBacklinks())
30 #if ($links.size() > 0)
31 #foreach ($docname in $links)
32 #set ($rdoc = $xwiki.getDocument($docname).getTranslatedDocument())
33 * [[$escapetool.xml($rdoc.fullName)]]
34 #end
35 #else
36 No back links for this page!
37 #end
38 {{/velocity}}
39
40 ----