Как я могу синхронизировать множественные рабочие рабочие?

StackOverflow https://stackoverflow.com/questions/2665883

  •  27-09-2019
  •  | 
  •  

Вопрос

У меня есть следующая ситуация:

  • Три задания: a, b, c (реализован как рабочие рабочие)
  • Два пользовательских события (звонки метода контроллера)

Задачи срабатывают таким образом:

  1. Первое событие пользователя вызывает задание A и задачу B.
  2. Затем дополнительное событие пользователя может запускать задачу C, но эта задача не должна работать до тех пор, пока задача A и B не закончится.

Как я могу принять эту цепочку событий?

Один из способов выполнить задачу A и B в начале задачи C, но задача по запускам события пользователя может никогда не произойти, но задача A и B должна выполняться тем не менее.

В «нормальной» программе у меня будет весь арсенал объектов синхронизации в моем распоряжении (Mutexes, семафоры, критические разделы, ...). Но что я могу сделать здесь?

(Если это имеет значение, приложение Rails будет работать на сервере Linux, а для сайтов настроен для использования Starling)

Это было полезно?

Решение

Вы можете использовать распределенный замок:

http://github.com/tanin47/ruby_redis_lock. (который мой)

Требуется редис, хотя.

Или вы можете создать библиотеку блокировки самостоятельно с другими СУБД, например MySQL.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top