นี่คือตัวอย่างจากการคำนวณแบบกระจาย:
1 ความเป็นมา
1.1 Asynchronous Shared Memory Model
ลองพิจารณาชุดของโหนดกระจายที่สื่อสารโดยใช้ตัวแปรหน่วยความจำที่ใช้ร่วมกัน มีปฏิปักษ์ที่ควบคุมเมื่อโหนดทำตามขั้นตอนและเวลาในการส่งข้อความ การคำนวณแบบอะซิงโครนัสคือฝ่ายตรงข้ามสามารถชะลอขั้นตอนของโหนดสำหรับจำนวนเวลา (จำกัด ) ใด ๆ
คุณสามารถนึกถึงขั้นตอนของโหนดเป็นการเปลี่ยนสถานะของหุ่นยนต์ท้องถิ่น (ตามอัลกอริทึม) โดยที่สถานะถัดไปจะถูกกำหนดโดยสถานะปัจจุบันและการสังเกตของโหนดตั้งแต่ขั้นตอนสุดท้าย
1.2 ความปลอดภัยและความเป็นอยู่
เมื่อให้เหตุผลอย่างเป็นทางการเกี่ยวกับคุณสมบัติของอัลกอริทึมแบบอะซิงโครนัสเราแยกความแตกต่างระหว่างคุณสมบัติด้านความปลอดภัยและความมีชีวิตชีวา อย่างไม่เป็นทางการเป็น
ความปลอดภัยของสถานที่สามารถตีความได้ว่าการรับประกันว่าสิ่งที่ "ไม่ดี" ไม่เคยเกิดขึ้น (เช่นสำหรับการกีดกันซึ่งกันและกันคุณสมบัติด้านความปลอดภัยก็คือว่าไม่มีสองโหนดที่เข้าสู่ส่วนที่สำคัญพร้อมกัน) Livenessสามารถตีความได้ว่าเป็น
MMα , β∈ M2- nnαβ
SP⊆ MPM∖ P
ใช้ Infinity Lemma ของ Koenig
มันไม่ได้ตรงไปตรงมาเสมอเพื่อดูว่าคุณสมบัติเฉพาะเป็นคุณสมบัติความปลอดภัย: พิจารณาการใช้งานของวัตถุอะตอมมิกอ่าน / เขียนที่ด้านบนของตัวแปรหน่วยความจำขั้นพื้นฐานที่ใช้ร่วมกัน การนำไปปฏิบัติดังกล่าวควรจัดการคำขอและการตอบสนองของพวกเขาในลักษณะที่ทำให้พวกเขาดูเหมือนว่าจะเกิดขึ้นในบางเวลาและไม่ละเมิดคำสั่งของพวกเขา (เนื่องจากการดำเนินงานที่ไม่ตรงกันระยะเวลาที่เกิดขึ้นจริงระหว่างการร้องขอและการตอบสนองอาจจะไม่ใช่ศูนย์.) อะตอมมิกซิตี้ยังเป็นที่รู้จักกันLinearizability ส่วนที่ 13.1 ของ [A] ให้การพิสูจน์ว่า Atomicity เป็นสมบัติความปลอดภัย หลักฐานใช้บทแทรกของ Koenig เพื่อแสดงให้เห็นว่าข้อ จำกัด ของลำดับการประหารชีวิตที่ไม่สิ้นสุด (ซึ่งแต่ละอันสอดคล้องกับ Atomicity) ก็สอดคล้องกับ Atomicity
[A] N. Lynch อัลกอริทึมแบบกระจาย Morgan Kaufmann, 1996