Алгоритм Лампорта взаимного исключения
Версия от 15:17, 26 июня 2010; Andrey Danilchenko (обсуждение | вклад) (переименовал «Параллельное программирование: Алгоритм Лампорта взаимного исключения» в «Алгоритм Лампорта взаимного исключения»)
Алгоритм Лампорта взаимного исключения:
Каждый поток поддерживает очередь запросов на вход в критическую секцию. Приоритет – временная метка (векторные часы) (+ номер потока ?).
Когда поток хочет войти в критическую секцию, он:
- Добавляет свой запрос в свою очередь
- Посылает всем потокам запрос
- Ждет от них ответа
- Получив все ответы, ждет, когда он станет первым в своей очереди, и входит в критическую секцию
- Выйдя из критической секции, посылает всем сообщение release
Действия вне критической секции:
- При получении запроса от другого потока, запрос добавляется в очередь и запрашивающему потоку посылается ответ.
- При получении release от другого потока, его запрос удаляется из очереди
messages.