Алгоритм Лампорта взаимного исключения — различия между версиями
Sementry (обсуждение | вклад) м |
|||
Строка 2: | Строка 2: | ||
'''Алгоритм Лампорта''' взаимного исключения: | '''Алгоритм Лампорта''' взаимного исключения: | ||
− | Каждый поток поддерживает очередь запросов на вход в критическую секцию. Приоритет – временная метка ( | + | Используются логические часы Лампорта. Каждый поток поддерживает очередь запросов на вход в критическую секцию. Приоритет – временная метка (важно: при равенстве временных меток берем тот поток, чей номер меньше). |
Когда поток хочет войти в критическую секцию, он: | Когда поток хочет войти в критическую секцию, он: |
Версия 18:46, 9 марта 2018
Алгоритм Лампорта взаимного исключения:
Используются логические часы Лампорта. Каждый поток поддерживает очередь запросов на вход в критическую секцию. Приоритет – временная метка (важно: при равенстве временных меток берем тот поток, чей номер меньше).
Когда поток хочет войти в критическую секцию, он:
- Добавляет свой запрос в свою очередь
- Посылает всем потокам запрос
- Ждет от них ответа
- Получив все ответы, ждет, когда он станет первым в своей очереди, и входит в критическую секцию
- Выйдя из критической секции, посылает всем сообщение release
Действия вне критической секции:
- При получении запроса от другого потока, запрос добавляется в очередь и запрашивающему потоку посылается ответ.
- При получении release от другого потока, его запрос удаляется из очереди
Суммарно на каждую критическую секцию приходится
сообщение.