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

 更新时间:2014年05月05日 10:52:59   作者:  
这篇文章主要介绍了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线程的输出完成再关闭此进程

相关文章

  • 深入理解Ruby中的代码块block特性

    深入理解Ruby中的代码块block特性

    听到代码块这个翻译,你或许会联想到类或者结构体,但block并不是这些东西,这里就带着大家来深入理解Ruby中的代码块block特性
    2016-05-05
  • 详解Ruby中正则表达式对字符串的匹配和替换操作

    详解Ruby中正则表达式对字符串的匹配和替换操作

    这篇文章主要介绍了Ruby中正则表达式对字符串的匹配和替换操作,包括对结果分组和一些特殊全局变量的介绍,需要的朋友可以参考下
    2016-04-04
  • 在阿里云 (aliyun) 服务器上搭建Ruby On Rails环境

    在阿里云 (aliyun) 服务器上搭建Ruby On Rails环境

    最近总是在配置阿里云的服务器,遇到不少问题,现小结一下,供大家参考~~
    2014-06-06
  • ruby执行周期性任务的三种gem介绍

    ruby执行周期性任务的三种gem介绍

    无论是用ruby做系统管理,还是用rails做web开发,都可能遇到周期性任务,它们按照一定时间周期(1小时,2天......)持续地触发。在ruby中,我认为一次性任务使用 sidekiq 来完成是非常方便的,而周期性的任务就需要用到 whenever , sidetiq , clockwork 等等gem了。
    2014-07-07
  • ruby线程实现生产者消费者问题示例(队列Queue实现线程同步)

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

    这篇文章主要介绍了ruby线程实现生产者消费者问题示例(队列Queue实现线程同步),需要的朋友可以参考下
    2014-05-05
  • ruby 杂项

    ruby 杂项

    ruby 杂项...
    2007-11-11
  • Ruby中Hash的11个问题解答

    Ruby中Hash的11个问题解答

    这篇文章主要介绍了Ruby中Hash的11个问题解答,本文讲解了如何创建Hash、Hash的键是哪些类型、 如何给Hash赋默认的值等内容,需要的朋友可以参考下
    2015-01-01
  • Ruby实现的3种快速排序算法

    Ruby实现的3种快速排序算法

    这篇文章主要介绍了Ruby实现的3种快速排序算法,本文给出了快速排序的普通版本、快速排序的随机化版本、快速排序的利用了Ruby的语法糖的随机化版本三个版本,需要的朋友可以参考下
    2015-05-05
  • Ruby基础语法初探

    Ruby基础语法初探

    这篇文章主要介绍了Ruby基础语法,第一次看到Ruby代码的朋友不知会不会被Ruby的语法吸引:) 需要的朋友可以参考下
    2015-07-07
  • ruby元编程实际使用实例

    ruby元编程实际使用实例

    这篇文章主要介绍了ruby元编程实际使用实例,包含用eval、alias、defind_method、instance_eval等实际使用例子,需要的朋友可以参考下
    2014-07-07

最新评论