首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >您将如何在ruby2.0中实现与信号的保存线程协作?

您将如何在ruby2.0中实现与信号的保存线程协作?
EN

Stack Overflow用户
提问于 2013-05-24 12:41:22
回答 1查看 72关注 0票数 2

我刚开始和线打交道。我知道这个理论,也了解它的主要方面,但在这个问题上我只做了一点练习。

我正在寻找一个好的解决方案(或模式,如果可用的话)对以下问题。

假设应该有一个事务组件,它包含来自队列的处理任务的线程池,这也是该事务组件的一部分。 这个池的每个线程都等待直到有一个任务要做,从队列中弹出它,处理它,然后等待下一个回合。 另外,假设有多个线程向此队列添加任务。然后,我希望这些线程挂起,直到它们的任务被处理。 如果处理某个任务,则应使已处理任务排队的线程再次运行。

ruby类Thread提供了Thread#stopThread#run方法。但是,我读到,如果您想要一个稳定的实现,就不应该使用这些方法。使用某种信号机制。

在ruby中,有一些类一般处理同步和线程协作,如ThreadMutexMonitorConditionVariable等。

也许ConditionVariable可以成为我的朋友,因为它允许发射信号,但我只是不确定。

您将如何实现这一点?

EN

回答 1

Stack Overflow用户

发布于 2013-05-24 17:19:12

Ruby提供了一个threadsafe Queue类,它将为您处理其中的一些问题:

代码语言:javascript
复制
queue.pop

直到将值推送到队列为止。您可以以这种方式使用任意数量的线程来等待队列。如果您推送到队列上的事情之一是另一个队列或条件变量,那么您可以使用它来指示任务完成。

众所周知,很难对线程进行有效的推理。您可能会发现另一种更高级别的方法,比如赛洛尔,更容易使用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16735229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档