Алгоритм распределенной многоресурсной пессимистической блокировки

Я реализую пессимистическую блокировку для распределенного хранилища значения ключа. У меня есть надежная атомная операция сравнения-обмена (и увеличения и уменьшения) для реализации блокировок. Есть также структуры данных для наборов, отсортированных наборов, списков и массивов, которые уже предлагают атомарные операции (и я могу манипулировать этими структурами любым способом, атомарно, используя серверные сценарии).

Используя вышеперечисленное в качестве строительных блоков, мне нужно создать мьютекс с повторным входом, который поддерживает такую ​​операцию, как WaitHandle.WaitAll.Net, т.е. возможность блокировать несколько ресурсов за один вызов, минимизируя при этом возможность оперативной блокировки и голодания. Как я могу это сделать? Есть ли общепринятый алгоритм?

В качестве побочного вопроса я рассмотрел такие вещи, как алгоритм Петерсона и его родственники, но кажется, что эти алгоритмы взаимного исключения решают проблему, отличную от той, с которой я сталкиваюсь (у меня уже есть атомарные операции). Я работаю над тем, что, по моему мнению, считается более продвинутым примитивом синхронизации (основанным на названии http://en.wikipedia.org/wiki/Mutual_exclusion), и мне интересно, существует ли отдельный класс алгоритмов которые отвечают на эти менее серьезные проблемы.

0 ответов

Другие вопросы по тегам