![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
begin state:= cand; send (token, this) to Nextp;
repeat receive (token, q);
if q = this then state:= coordinator
Else ifest(this) < est(q)then
begin if state = cand then state:= lost;
send (token, q) to Nextp
End
until state = coordinator
End
else repeat receive (token, q); send (token, q) to Nextp;
if state = sleep then state:= lost
until false
end (* Только координатор может завершить выполнение программы. Он передает сообщение всем сайтам, чтобы сообщить им свой идентификатор. *)
Пусть p0 – инициатор с наибольшим идентификатором. Все процессы являются либо не-инициаторами, либо инициаторами с идентификаторами меньшими p0, поэтому все процессы передают дальше маркер (token, p0), отправленный p0. Следовательно, p0 получает свой маркер обратно и становится выбранным.
Не-инициаторы не могут быть выбраны, так как все они приходят в состояние проигравший самое позднее, когда через них передается маркер p0. Инициатор p с оценкой est (p) < est (p0) не может быть выбран; p0 не передаст дальше маркер (token, p), поэтому p никогда не получит свой собственный маркер. Такой инициатор p приходит в состояние проигравший самое позднее, когда через него передается маркер (token, p0).
Рис. 30. Иллюстрация к алгоритму Чанга-Робертса
На рис. 30 изображен некоторый момент выполнения алгоритма Чанга-Робертса. На кольце расположены сайты. На внешней стороне кольца указаны их идентификаторы, на внутренней – величины оценок, на основе которых производится выбор координатора. Кружок с числом 2 – маркер (token, 2), переносящий номер сайта, для которого оценка имеет значение «31», стрелка указывает направление движения маркера. Начальный сайт при выполнении алгоритма указан звездочкой – это сайт 1 с оценкой est (1) = 24.
Дата публикования: 2014-11-18; Прочитано: 242 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!