2010-04-19 5 views
1

je la situation suivante:Comment synchroniser plusieurs travailleurs Workling?

  • Trois tâches: A, B, C (Mis en œuvre en tant que travailleurs Workling)
  • Deux événements utilisateur (appels d'une méthode de contrôle)

Les tâches sont déclenché cette façon:

  1. Le premier événement utilisateur déclenche la tâche A et la tâche B.
  2. Ensuite, un u option L'événement ser peut déclencher la tâche C, mais cette tâche ne doit pas s'exécuter tant que les tâches A et B ne sont pas terminées.

Comment puis-je appliquer cette chaîne d'événements? Une méthode consiste à effectuer les tâches A et B au début de la tâche C, mais l'événement utilisateur qui déclenche la tâche C peut ne jamais se produire, mais les tâches A et B doivent néanmoins être exécutées.

Dans un programme "normal", je disposais de tout l'arsenal d'objets de synchronisation (mutex, sémaphores, sections critiques, ...). Mais que puis-je faire ici?

(S'il importe, l'application Rails fonctionnera sur un serveur Linux et Workling est configuré pour utiliser Starling)

Répondre

1

Vous pouvez utiliser un verrou distribué:

http://github.com/tanin47/ruby_redis_lock (ce qui est le mien)

Il nécessite Redis, cependant. Ou, vous pouvez créer une bibliothèque de verrous par vous-même avec d'autres dbms, par ex. MySQL

Questions connexes