我正在研究用 Ruby 实现“Fair Barbershop”问题。这是课堂作业,但我不是在寻找任何讲义。我一直在疯狂地搜索,但我似乎无法找到反映 C 中信号量的 Ruby 实现。
我知道有 Mutex,这很棒。单一实现,完全完成了那种信号量应该做的事情。
然后是条件变量。我认为这会很好地解决问题,但是看看这些,它们每个等待调用都需要一个互斥锁,在我看来,我无法将数值放入信号量(例如,我有 7 个理发店,3 个)理发师等)。
我认为我需要一个计数信号量,但我认为 Ruby 没有(据我所知)在其核心中包含这样一个类,这有点奇怪。谁能帮我指出正确的方向?
如果您使用 JRuby,则可以从 Java 导入信号量,如下所示本文 http://blog.paracode.com/2012/09/07/pragmatic-concurrency-with-ruby/.
require 'java'
java_import 'java.util.concurrent.Semaphore'
SEM = Semaphore.new(limit_of_simultaneous_threads)
SEM.acquire #To decrement the number available
SEM.release #To increment the number available
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)