Đây là một ví dụ từ tính toán phân tán:
1. Bối cảnh
1.1 Mô hình bộ nhớ chia sẻ không đồng bộ
Hãy xem xét một tập hợp các nút phân tán giao tiếp bằng các biến bộ nhớ dùng chung. Có một đối thủ điều khiển khi một nút thực hiện các bước và khi nào gửi tin nhắn. Việc tính toán không đồng bộ , tức là đối thủ có thể trì hoãn các bước của các nút trong bất kỳ khoảng thời gian (hữu hạn) nào.
Bạn có thể nghĩ về một bước của nút là chuyển trạng thái của máy tự động cục bộ của nó (theo thuật toán) trong đó trạng thái tiếp theo được xác định bởi trạng thái hiện tại và các quan sát của nút kể từ bước cuối cùng.
1.2 An toàn và sinh động
Khi chính thức suy luận về các thuộc tính của thuật toán không đồng bộ, chúng tôi phân biệt giữa các thuộc tính an toàn và tính sống. Một cách không chính thức, một
tài sản an toàn có thể được hiểu là sự đảm bảo rằng một cái gì đó "xấu" không bao giờ xảy ra. (Ví dụ, để loại trừ lẫn nhau, một tài sản an toàn sẽ không có hai nút vào đoạn găng cùng một lúc.) Nhận diện khuôn mặt , mặt khác, có thể được hiểu là "một cái gì đó tốt cuối cùng sẽ xảy ra", ví dụ: mỗi nút cuối cùng chấm dứt.
MMα , β∈ M2- nnαβ
SP⊆ MPM∖ P
Áp dụng Bổ đề Vô cực của Koenig
Không phải lúc nào cũng đơn giản để xem liệu một thuộc tính cụ thể có phải là một thuộc tính an toàn hay không: Hãy xem xét việc thực hiện các đối tượng nguyên tử đọc / ghi trên đầu các biến bộ nhớ chia sẻ cơ bản. Việc triển khai như vậy sẽ xử lý các yêu cầu và phản hồi của chúng theo cách khiến chúng trông như thể chúng xảy ra ngay lập tức và không vi phạm lệnh gọi của chúng. (Do hoạt động không đồng bộ, thời lượng thực tế giữa yêu cầu và phản hồi có thể khác không.) Tính nguyên tử còn được gọi là Tính tuyến tính . Mục 13.1 của [A] đưa ra bằng chứng rằng Nguyên tử là một thuộc tính an toàn. Bằng chứng sử dụng bổ đề của Koenig để chỉ ra rằng giới hạn của bất kỳ chuỗi thực thi vô hạn nào (mỗi chuỗi đều thỏa mãn Nguyên tử) cũng thỏa mãn Nguyên tử.
[A] N. Lynch. Thuật toán phân tán. Morgan Kaufmann, 1996.