Ось приклад із розподілених обчислень:
1 Передумови
1.1 Асинхронна модель спільної пам'яті
Розглянемо сукупність розподілених вузлів, які спілкуються за допомогою змінних загальної пам'яті. Є супротивник, який контролює, коли вузол здійснює дії та коли доставляє повідомлення. Обчислення є асинхронними , тобто противник може затримувати кроки вузлів на будь-який (кінцевий) проміжок часу.
Ви можете розглядати крок вузла як перехід стану його локального автомата (за алгоритмом), коли наступний стан визначається поточним станом та спостереженнями вузла з останнього кроку.
1.2 Безпека та життєздатність
Формально міркуючи про властивості асинхронного алгоритму, ми розрізняємо властивості безпеки та життєдіяльності. Неофіційно
майно безпеки можна трактувати як гарантію того, що чогось «поганого» ніколи не станеться. (Наприклад, для взаємного виключення, властивістю безпеки буде те, що жоден два вузли не входять одночасно у критичну секцію.) Життєздатність , з іншого боку, можна трактувати як "щось хороше, врешті-решт, трапиться", наприклад: кожен вузол врешті-решт припиняється.
ММα , β∈ M2- ннαβ
SП⊆ МПМ∖ Р
Застосування лемеми нескінченності Кеніга
Не завжди просто зрозуміти, чи є певна властивість властивістю безпеки: Розгляньте реалізацію читання / запису атомних об'єктів поверх основних змінних пам'яті спільної пам'яті. Така реалізація повинна обробляти запити та їх відповіді таким чином, щоб вони виглядали так, ніби вони трапляються в якийсь момент часу і не порушують їх порядок виклику. (Через асинхронну операцію фактична тривалість між запитом та відповіддю може бути ненульовою.) Атомність також відома як лінійність . Розділ 13.1 [A] дає доказ того, що Atomicity є властивістю безпеки. Доказ використовує лемму Кеніга, щоб показати, що межа будь-якої нескінченної послідовності страт (кожна з яких задовольняє атомічність) також задовольняє атомність.
[А] Н. Лінч. Розподілені алгоритми. Морган Кауфман, 1996.