1

我有以下情况:

  • 三项任务:A、B、C(作为 Workling 工人实施)
  • 两个用户事件(控制器方法的调用)

任务以这种方式触发:

  1. 第一个用户事件触发任务 A 和任务 B。
  2. 然后可选的用户事件可以触发任务 C,但该任务必须在任务 A 和 B 完成之前运行。

我怎样才能强制执行这一系列事件?

一种方法是在任务 C 开始时执行任务 A 和 B,但触发任务 C 的用户事件可能永远不会发生,但仍然必须执行任务 A 和 B。

在“正常”程序中,我可以使用整个同步对象库(互斥锁、信号量、临界区……)。但我能在这里做什么?

(如果重要的话,Rails 应用程序将在 Linux 服务器上运行,并且 Workling 设置为使用 Starling)

4

1 回答 1

1

您可以使用分布式锁:

http://github.com/tanin47/ruby_redis_lock(这是我的)

不过,它需要 Redis。

或者,您可以自己构建一个锁库与其他dbms,例如MySQL。

于 2011-09-29T19:54:31.737 回答