我正致力于在 Ruby 中实现“Fair Barbershop”问题。这是一份类作业,但我不是要找任何讲义。我一直在疯狂地搜索,但我似乎无法找到一个信号量的 Ruby 实现来镜像在 C 中找到的信号量。
我知道有 Mutex,这很棒。单一实现,正是那种信号量应该做的。
然后是条件变量。我认为这会很好地解决问题,但是看看这些,每个等待调用都需要一个 Mutex,在我看来我无法将数值放入信号量(例如,我有七个理发店,3理发师等)。
我想我需要一个计数信号量,但我认为 Ruby 没有(据我所知)在其核心中包含这样一个类,这有点奇怪。谁能帮我指出正确的方向?
最佳答案
如果您使用的是 JRuby,则可以从 Java 导入信号量,如 this article 所示。 .
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
关于 ruby 信号量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5478789/