ruby线程编程,ruby相当于java wait/notify/notifyAll

Geo*_*Geo 6 ruby java multithreading synchronization

我想知道ruby是Java方法的替代品:

  • 等待
  • 通知
  • notifyAll的

你能发一个小片段或一些链接吗?

小智 7

你正在寻找的是ConditionVariableThread:

require "thread"

m = Mutex.new 
c = ConditionVariable.new
t = []

t << Thread.new do
  m.synchronize do
    puts "A - I am in critical region"
    c.wait(m)
    puts "A - Back in critical region"
  end
end

t << Thread.new do
  m.synchronize do
    puts "B - I am critical region now"
    c.signal
    puts "B - I am done with critical region"
  end
end

t.each {|th| th.join }
Run Code Online (Sandbox Code Playgroud)


wom*_*ble 2

需要注意的是,我不了解 Java,根据您的评论,我认为您需要一个条件变量。Google 的“Ruby 条件变量”提供了一堆有用的页面。我得到的第一个链接似乎是对条件变量的一个很好的快速介绍,特别是,而看起来它提供了 Ruby 中线程编程的更广泛的覆盖范围。