Изменения
Нет описания правки
[[Категория: Параллельное программирование]]
'''Алгоритм Лампорта''' -- алгоритм взаимного исключения:, работающий в случае, если все сообщения идут FIFO и использующий логические часы Лампорта.
Когда поток хочет войти в критическую секцию, он:
# Добавляет свой запрос в свою очередь (т.е временную метку и номер потока)
# Посылает всем потокам запрос(req)# Ждет от них ответа(ok)
# Получив все ответы, ждет, когда он станет первым в своей очереди, и входит в критическую секцию
# Выйдя из критической секции, посылает всем сообщение releaseо том, что вышел (rel)
Действия вне критической секции:
* При получении запроса от другого потока, запрос добавляется в очередь и запрашивающему потоку посылается ответ.
* При получении release от другого потока, его запрос удаляется из очереди
Суммарно на каждую критическую секцию приходится <tex>3(N - 1)</tex> сообщение.