我正在研究Ruby中“公平理发店”问题的实现。这是为了一个班级任务,但我没有寻找任何讲义。我一直在寻找像疯了似的,但我似乎无法找到一个Ruby实现,它反映那些C.Ruby信号量?
我知道有互斥发现信号灯的,这是很大的。单一的实现,就是那种信号量应该做的。
然后是条件变量。我认为这样做会很好,但看着这些,他们需要一个Mutex来等待每一次等待,这在我看来就像我不能把数值放到信号量上一样(例如,我有7个理发店,3个理发师等)。
我想我需要一个计数信号,但我认为这是一个有点怪异的是Ruby没有(从我可以找到)包含在其核心这样一类。任何人都可以帮助我指出正确的方向吗?
这个怎么样:HTTP:// WWW .imasy.or.jp /〜fukumoto/ruby/semaphore.rb? – fresskoma 2011-03-29 21:10:03
经过一些调整,这看起来正是我所期待的。 Thread.critical的东西显然在1.9中不起作用,所以我用Thread.exclusive {}块替换了它。不过,我仍然不明白为什么这不是Ruby核心库的一部分。 – 2011-03-30 02:33:45
imasy.or.jp的服务器似乎已经消失或关闭......任何人都有更新的链接? – 2012-08-23 15:39:07