複数のワーカーワーカーを同期するにはどうすればよいですか?

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

  •  27-09-2019
  •  | 
  •  

質問

私には次の状況があります:

  • 3つのタスク:A、B、C(ワーカーワーカーとして実装)
  • 2つのユーザーイベント(コントローラーメソッドの呼び出し)

タスクはこのようにトリガーされます。

  1. 最初のユーザーイベントは、タスクAとタスクBをトリガーします。
  2. その後、オプションのユーザーイベントはタスクCをトリガーできますが、タスクAとBが終了するまでそのタスクを実行してはなりません。

この一連のイベントを強制するにはどうすればよいですか?

1つの方法は、タスクCの開始時にタスクAとBを実行することですが、タスクCをトリガーするユーザーイベントは決して起こらないかもしれませんが、それでもタスクAとBを実行する必要があります。

「通常の」プログラムでは、私は自由に同期オブジェクトの武器を自由に使うことができます(ミューテックス、セマフォ、批判的セクション、...)。しかし、ここで何ができますか?

(それが重要な場合、RailsアプリケーションはLinuxサーバーで実行され、WorkingがStarlingを使用するように設定されます)

役に立ちましたか?

解決

分散ロックを使用できます。

http://github.com/tanin47/ruby_redis_lock (私のものです)

ただし、Redisが必要です。

または、他のDBM(MySQLなど)で自分でロックライブラリを構築することもできます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top