Алгоритм Рикарта-Агравалы — различия между версиями
(Новая страница: «'''Алгоритм Рикарта-Агравалы''' взаимного исключения: # Когда процесс <tex>Р_i</tex> хочет войти в …») |
|||
Строка 1: | Строка 1: | ||
+ | [[Категория: Параллельное программирование]] | ||
'''Алгоритм Рикарта-Агравалы''' взаимного исключения: | '''Алгоритм Рикарта-Агравалы''' взаимного исключения: | ||
# Когда процесс <tex>Р_i</tex> хочет войти в критический участок, то рассылает всем сообщение "запрос" с текущей временной меткой | # Когда процесс <tex>Р_i</tex> хочет войти в критический участок, то рассылает всем сообщение "запрос" с текущей временной меткой |
Версия 15:16, 26 июня 2010
Алгоритм Рикарта-Агравалы взаимного исключения:
- Когда процесс хочет войти в критический участок, то рассылает всем сообщение "запрос" с текущей временной меткой
- Когда процесс
- если он сам не посылал запрос, то посылает отклик
- если он послал свой запрос, он сравнивает временные метки этих двух запросов и посылает отклик только если у его собственного запроса метка позже (на самом деле, при равенстве меток, нужно проверять, у кого больше номер, т.е. для отсутствия блокировок нужно ввести приоритет на потоках)
- в остальных случаях процесс задерживает отправку отклика
получает от запрос войти в критический участок:
- Процесс может войти в критический участок только после получения откликов ото всех других узлов сети
- После выхода из него он рассылает задержанные отклики на все
ожидающие запросы
Starvation-free.
messages.Отказ любого узла приводит к зависанию. Решается проблема введением таймаутов.