![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
begin state:= cand; send (token, this) to Nextp; receive (token, q);
Whileq ¹ this do
begin Listp:= Listp È {q};
send (token, q) to Nextp; receive (token, q);
end;
if this = max (Listp) then state:= coordinator
else state:= lost
End
else repeat receive (token, q); send (token, q) to Nextp;
if state = sleep then state:= lost
until false
End
Так как порядок маркеров в кольце сохраняется (из предположения о каналах FIFO), и инициатор q отправляет (token, q) до того какполучит (token, p), то инициатор p получает (token, q) прежде, чем вернется (token, p). Отсюда следует, что каждый инициатор p заканчивается со списком Listp, совпадающим с множеством всех инициаторов, и единственным выбираемым сайтом становится инициатор с наибольшей оценкой.
Все не-инициаторы приходят в состояние проигравший, но навсегда остаются в ожидании сообщений (token, r). Ожидание может быть прервано, если лидер посылает по кольцу специальный маркер, чтобы объявить об окончании выборов.
Алгоритм Чанга-Робертса, приведенный ниже, устраняет из кольца маркеры тех сайтов, для которых очевидно, что они проиграют выборы. В этом смысле он улучшает алгоритм Лелана. Т.е. инициатор p удаляет из кольца маркер (token, q), если est (q) < est (p). Инициатор p становится проигравшим, когда получает маркер с идентификатором q, таким что est (q) > est (p), или координатором, когда он получает маркер с идентификатором p.
var state: (sleep, coordinator, lost);
Дата публикования: 2014-11-18; Прочитано: 291 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!