【发布时间】:2011-07-25 15:03:52
【问题描述】:
我正在用 Ruby 实现“公平理发店”问题。这是课堂作业,但我不是在寻找任何讲义。我一直在疯狂地搜索,但似乎找不到与 C 中的信号量相同的信号量的 Ruby 实现。
我知道有 Mutex,这很棒。单一实现,正是这种信号量应该做的事情。
然后是条件变量。我认为这会很好,但是看看这些,每次等待调用都需要一个 Mutex,在我看来,我无法将数值输入信号量(例如,我有 7 家理发店,3理发师等)。
我认为我需要一个计数信号量,但我认为 Ruby(据我所知)在其核心中不包含这样的类有点奇怪。谁能帮我指出正确的方向?
【问题讨论】:
-
经过一些调整,这似乎正是我想要的。 Thread.critical 的东西显然在 1.9 中不起作用,所以我用 Thread.exclusive {} 块替换了它。不过,我仍然不明白为什么这不是 Ruby 核心库的一部分。
-
imasy.or.jp 的服务器似乎已关闭或关闭...有人有更新的链接吗?