P1 и P2 - процессы или узлы в кластере. f1 и f2 - их флаги. Предположим, сильная модель памяти, и что оба процесса могут быть перезапущены в любой момент, и что перезапуск процесса очищает его флаг, вот алгоритм, который я придумал и который еще не смог сломать, но это беспокоит меня, потому что это не доказано теоретически выглядит слишком просто по сравнению с Петерсоном.
P1 start:
set f1
if f2 set then clear f1, wait some, goto start
else enter critical section
do whatever
clear f1
P2 start:
set f2
if f1 set then clear f2, wait some, goto start
else enter critical section
do whatever
clear f2
Кто-нибудь может видеть поток? За исключением случаев, когда один из процессов может голодать, если быстро войти в раздел?