ruby 信号量?

标签 ruby mutex semaphore

我正致力于在 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/

相关文章:

ruby - 无法在 Linux 中的 Ruby 中安装 Gosu 库

ruby - 在 Ruby 中使用集合

mysql - 在单个 Ruby/MySQL 查询中加载整个链表

rust - 如何在 Rust 中正确改变互斥体后面的向量

java - 应用程序为什么/如何保留另一个进程创建的互斥体引用?

c# - 为什么我需要将锁与信号量一起使用

C - 信号量未在所有进程上共享

Ruby:语法错误,意外的 tIDENTIFIER,需要 ')'

c++ - 单个进程中的死锁 -?

c - 使用信号量时 Sleep() 被忽略