如何同步多个Workling工作人员?

发布于 2024-08-29 12:41:29 字数 416 浏览 8 评论 0原文

我有以下情况:

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

任务以这种方式触发:

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

我如何执行这一系列事件?

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

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

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

I have the following situation:

  • Three tasks: A,B,C (Implemented as Workling workers)
  • Two user events (Calls of a controller method)

The tasks are triggered this way:

  1. The first user event triggers Task A and Task B.
  2. Then an optional user event can trigger Task C, but that task must not run until Task A and B are finished.

How can I enforce this chain of events?

One way would be to perform Task A and B at the beginning of Task C, but the user event triggering Task C might never happen, but Task A and B must be performed nevertheless.

In a "normal" program I'd have the whole arsenal of synchronization objects at my disposal (mutexes, semaphores, critical sections, ...). But what can I do here?

(If it matters, the Rails application will run on a Linux server and Workling is set up to use Starling)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

孤独陪着我 2024-09-05 12:41:29

您可以使用分布式锁:

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

但它需要 Redis。

或者,您可以使用其他数据库管理系统(例如MySQL)自行构建锁库。

You can use a distributed lock:

http://github.com/tanin47/ruby_redis_lock (which is mine)

It requires Redis, though.

Or, you can build a lock library by yourself with other dbms, e.g. MySQL.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文