служитель зоопарка - блокирующий one-many

У меня есть ряд ресурсов, каждый из которых имеет уникальный идентификатор и каждый элемент ресурса, должен быть заблокирован, прежде чем он будет использоваться и разблокирован впоследствии. Логика приложения:

lock any one element;
if (none locked) then 
   exit with error;
else
   get resource-id from lock
   use resource
   unlock resource
end

Служитель зоопарка похож на хорошего кандидата на управление этими блокировками, будучи быстрым и эластичным, и кажется довольно простым восстановиться с клиентского отказа.

Кто-либо может думать, как я мог использовать Служителя зоопарка для достижения этого?

1
задан Martin 23 February 2010 в 11:53
поделиться

1 ответ

Как насчет этого -

у вас есть ресурсы в каталоге (скажем, / locks)

каждый процесс, который необходимо заблокировать , перечисляет все дочерние элементы этого каталога , а затем создает временный узел с именем / locks / resource1 / lock в зависимости от , какой ресурс он хочет заблокировать. Он может быть рандомизирован по набору ресурсов.

Этот эфемерный узел будет удален процессом, как только он будет использовать ресурс. Процесс должен использовать to resource_ {i} только в том случае, если он смог создать / locks / resource_ {i} / locks.

Это сработает?

Спасибо, mahadev

2
ответ дан 3 September 2019 в 01:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: