292
правки
Изменения
→Запоминание сообщений на стороне отправителя
=== Запоминание сообщений на стороне отправителя ===
Если сообщения могут теряться, то есть смысл запоминать сообщения на стороне отправителя(впрочем, тогда у нас весь алгоритм может сломаться, потому что он не делает попытки перепослать сообщение-маркер; но это можно пробовать лечить таймаутами). Пусть процесс записывает все исходящие сообщения, пока он белый. Когда белый процесс получает белое сообщение, он посылает ответный маркер ack. Если процесс-отправитель получил ack на соответствующее сообщение, то его можно больше не хранить.
Когда все процессы стали красными, надо взять их красные состояния и все исходящие сообщения в качестве состояния системы.