1

次のような状況があります。

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

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

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

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

1 つの方法は、タスク C の開始時にタスク A と B を実行することですが、タスク C をトリガーするユーザー イベントは発生しない可能性がありますが、それでもタスク A と B は実行する必要があります。

「通常の」プログラムでは、すべての同期オブジェクト (ミューテックス、セマフォ、クリティカル セクションなど) を自由に使用できます。しかし、ここで何ができますか?

(問題があれば、Rails アプリケーションは Linux サーバー上で実行され、Workling は Starling を使用するようにセットアップされます)

4

1 に答える 1

1

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

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

ただし、Redis が必要です。

または、MySQL などの他の dbm を使用して、自分でロック ライブラリを構築することもできます。

于 2011-09-29T19:54:31.737 に答える