==Модификации==
Будем называть сообщения красными, если они отправлены от красного процесса, аналогично для белого процесса. С технической точки зрения, при отправке сообщения или же маркера, будем добавлять цвет передаваемого сообщения. Это мы будем использовать в обеих модификациях.
* не FIFO канал связи
Вместо отправки маркера будем отправлять с каждым сообщением цвет текущего процесса. Как только белый процесс получил красное сообщение от красного(либо же маркер, как и раньше), он инициирует изменение цветаи т.д. Однако это не решает проблему того, что белое сообщение может прибыть позже красного. Чтобы решить эту проблему, будем вместе с маркеом отправлять общее (тотальное) число белых сообщений, отправленных соответствующим процессом через соотвествующий канал на конкретный момент. Процесс-получатель отслеживает общее количество полученных белых сообщений и знает, что все белые сообщения будут получены, когда этот счет будет равен тотальному числу. * ненадежный канал связи(запоминание на стороне отправителя)Если сообщения могут теряться, то есть смысл запоминать сообщения на стороне отправителя. Пусть процесс записывает все исходящие сообщения пока не станет краснымон белый. Как только он стал краснымКогда процессы-получатели становятся красными, он отправляет маркер во все входящие каналы (в обратном направлении)они высылают ответный маркеры ack сигнализирующие о том, подтверждающий получение предыдущих сообщенийчто получили сообщения. Процесс может проверить состояние канала удалением всех сообщенийЕсли процесс-отправитель получил ack на соответствующее сообщение, связанных с маркером для данного каналато его можно больше не хранить.