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

Версия 1.10 от Alexandr Fokin на 2023/05/21 09:57

Последние авторы
1 ----
2
3 1. Берем элемент (не блокируя) (фиксируем version/timestamp)
4 1. Производим обработку.
5 1. Атомарно проверяем, что version/timestamp не изменился. (иначе ошибка/повторная обработка/игнорирования, что исходные данные изменились с момента начала обработки) 
6 Сохраняем элемент.
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 ----