我刚开始使用线程。我知道理论并理解它的主要方面,但我在这个主题上只有一点练习。
我正在为以下问题寻找一个好的解决方案(或模式,如果有的话)。
假设应该有一个事务组件,它拥有一个线程池来处理来自队列的任务,这也是该事务组件的一部分。
这个池中的每个线程一直等待,直到有任务要做,从队列中弹出,处理它,然后等待下一轮。
还假设有多个线程将任务添加到此队列。然后我希望这些线程暂停,直到它们的任务被处理。
如果处理了一个任务,则应使将处理后的任务排队的线程再次可运行。
ruby 类Thread
提供方法Thread#stop
和Thread#run
. 但是,我读到,如果你想要一个稳定的实现,你不应该使用这些方法。并使用某种信号机制。
在 ruby 中,有一些类通常处理同步和线程协作,如Thread
、Mutex
、Monitor
、ConditionVariable
等。
也许ConditionVariable
可能是我的朋友,因为它允许发出信号,但我不确定。
你将如何实现这一点?