Jos*_*ach 15 ruby mutex semaphore
我正在研究Ruby中"Fair Barbershop"问题的实现.这是一个课堂作业,但我不是在寻找任何讲义.我一直在寻找疯狂,但我似乎无法找到一个反映在C中找到的信号量的Ruby实现.
我知道有Mutex,这很棒.单一实现,确实完成了那种信号量应该做的事情.
那就是条件变量.我认为这样做会很好,但是看看这些,他们需要一个Mutex用于每次等待调用,这对我来说就像我不能将数值放到信号量上(因为我有七个理发店,3理发师等).
我想我需要一个Counting Semaphore,但我认为Ruby(我能找到的)在其核心中包含这样一个类有点奇怪.谁能帮助我指出正确的方向?
感谢@x3ro 提供的链接。这为我指明了正确的方向。然而,在 Fukumoto 提供的实现中(至少对于 rb1.9.2),Thread.ritic 不可用。此外,我尝试用 Thread.exclusive{} 替换 Thread.ritic 调用只会导致死锁。事实证明,有一个针对 Ruby 的建议信号量补丁(我在下面链接了),它通过用 Mutex::synchronize{} 替换 Thread.exclusive{} 以及其他一些调整来解决该问题。感谢@x3ro 将我推向正确的方向。
http://redmine.ruby-lang.org/attachments/1109/final-semaphore.patch
| 归档时间: |
|
| 查看次数: |
6304 次 |
| 最近记录: |