Я пытаюсь написать алгоритм блокировки общего назначения, который позволяет мне блокировать диапазон непрерывных значений в отсортированном массиве.Начнем с того, что это могут быть эксклюзивные блокировки, поэтому две одновременные блокировки не должны перекрываться.Что может быть хорошим, масштабируемым алгоритмом для этого?(Масштабируемый ~ одновременный)
Конкретным примером может быть блокировка диапазона непрерывных байтов в файле для записи.
Конкретно: допустим, {a_i}
- допустимая последовательность, для i
= От 0 до N-1
, так что:
a_j < a_k
для всех j, k, таких что 0 <= j < k < N
. lock(a_j, a_k)
блокирует все элементы от a_j
доa_k
. - Пока удерживается вышеуказанная блокировка, другой запрос
lock(a_x, a_y)
будет успешным , только если либо a_x > a_k
, либо a_y < a_j
.