示例代码:
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线程的输出完成再关闭此进程
运行结果:
ProAndCon produced produced consumed 0 produced produced consumed 1 consumed 2 consumed 3 produced consumed 4 produced consumed 5
美化的代码图: