menuTicketing

Матрица «запрос × состояние ключа»

A (получение)

Состояние ключаДействие сервераОтветМомент
Не зарегистрированРегистрация (срок=now+lease), выдача токенаA+token+keyнемедленно
Зарегистрирован + срок истёкПродление (now+lease), новый токенA+token+keyнемедленно
Зарегистрирован + действителен (занят)Постановка в очередь, ответ откладываетсяA+token+key либо T+keyв момент получения при освобождении/истечении срока, либо T при превышении wait
  • Путь освобождения — FIFO-справедливый: когда держатель делает R, ключ напрямую передаётся первому в очереди (без повторной конкуренции, с новым токеном).
  • Только путь истечения срока не FIFO. Повторный вход невозможен (если тот же клиент снова делает A по ключу, который уже держит → становится в очередь).

R (освобождение)

Состояние ключаДействие сервераОтвет
Зарегистрирован, есть ожидающиеПрямая передача первому в очереди (новый токен)R+key
Зарегистрирован, ожидающих нетУдаление ключаR+key
Не зарегистрированНичегоN+key