ruby线程实现生产者消费者问题示例(队列Queue实现线程同步)

Ruby线程实现经典的生产者消费者问题,用ruby中的Queue类实现线程同步问题。

代码如下:

require "thread"  
puts "ProAndCon"  

queue = Queue.new    #用队列Queue实现线程同步  

producer = Thread.new do  
    10.times do |i|  
        sleep rand(i) # 让线程睡眠一段时间  
        queue << i  
        puts "#{i} produced"  
    end  
end  

consumer = Thread.new do  
    10.times do |i|  
        value = queue.pop  
        sleep rand(i/2)  
        puts "consumed #{value}"  
    end  
end  

consumer.join  #等待consumer线程的输出完成再关闭此进程

相关推荐