[[Категория: Параллельное программирование]]
'''Алгоритм Чанди-Лампорта''' получения [[Срез, согласованный срез|согласованного среза]]с запоминанием на стороне получателя с учетом FIFO канала связи.
Суть алгоритма в том, что мы ставим в соответствие каждому процессу цвет (белый или красный или белый)свет. Изначально все процессы белые. Когда все процессы станут красными мы получим согласованный срез.
Процесс меняет цвет как только записал Есть инициатор (observer) с которого всё начинается. Он становится красным, запоминает свое локальное состояние. После этого он отсылает и посылает маркер всем другим процессам специальное сообщение - маркерс которыми у него есть канал. Только после этого он может снова обрабатывать полученные сообщенияили же отправлять. Если процесс получил маркер и еще белый, то он обязан стать красным, записать свое локальное состояние, стать красным и оправить отправить остальным процессам маркеры. Иначе можно ничего не делать. Это гарантирует, что ни один белый процесс не получит сообщение от красного процесса(иначе будет противоречие с идеей согласованного среза). Чтобы восстановить работу системы из запомненного состояния надо еще запоминать и сообщения, которые оказались в пути, т.е все такие $m$, что $snd(m) ∈ G ∧ $rcv(m) ∈ E \ G$, где $G$ – согласованный срез. Для этого применим, так называемое, запоминание на стороне получателя. Когда красный процесс получает сообщение от белого процесса (без маркера), то процесс сохраняет его у себя.
==Модификации==