Ruby中用线程实现经典的生产者消费者问题代码实例

 更新时间:2015年01月22日 11:30:01   投稿:junjie  
这篇文章主要介绍了Ruby中用线程实现经典的生产者消费者问题代码实例,本文直接给出实现代码和运行效果,需要的朋友可以参考下

示例代码:

复制代码 代码如下:

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

美化的代码图:

相关文章

  • Ruby和Shell脚本实现判断成绩及格功能

    Ruby和Shell脚本实现判断成绩及格功能

    这篇文章主要介绍了Ruby和Shell脚本实现判断成绩及格功能,使用Ruby实现这个功能非常简洁优雅,而Shell的实现就比较传统了,需要的朋友可以参考下
    2015-01-01
  • Ruby实现的图片滤镜算法代码

    Ruby实现的图片滤镜算法代码

    本文给大家分享的是使用ruby实现的几种图片滤镜的算法,包括灰度、二值、底片、浮雕。非常的简单实用,有需要的小伙伴可以参考下
    2017-01-01
  • Ruby与Ruby on Rails框架环境搭建的简明教程

    Ruby与Ruby on Rails框架环境搭建的简明教程

    这篇文章主要介绍了Ruby与Ruby on Rails框架环境搭建的简明教程,包括RubyGems的升级与OpenSSL的支持等配置,需要的朋友可以参考下
    2016-05-05
  • CentOS 6.3下编译安装Ruby 2.0笔记

    CentOS 6.3下编译安装Ruby 2.0笔记

    这篇文章主要介绍了CentOS 6.3下编译安装Ruby 2.0笔记,最重要的是解决了一个编译时的错误,需要的朋友可以参考下
    2014-09-09
  • Ruby使用REXML库来解析xml格式数据的方法

    Ruby使用REXML库来解析xml格式数据的方法

    这篇文章主要介绍了Ruby使用REXML库来解析xml格式数据的方法,文章最后提及了REXML库的使用相关安全问题可以注意一下,需要的朋友可以参考下
    2016-04-04
  • Ubuntu上配置Ruby on Rails框架及RubyMine IDE开发环境

    Ubuntu上配置Ruby on Rails框架及RubyMine IDE开发环境

    Ruby on Rails是Ruby世界中当仁不让的Web框架代表,甚至可以说Rails推动了Ruby的流行,这里我们就来看一下如何在Ubuntu上配置Ruby on Rails框架及RubyMine IDE开发环境
    2016-07-07
  • ruby实现石头剪刀布游戏示例

    ruby实现石头剪刀布游戏示例

    这篇文章主要介绍了ruby实现石头剪刀布游戏示例,需要的朋友可以参考下
    2014-05-05
  • Ruby的语法和语言特性总结

    Ruby的语法和语言特性总结

    这篇文章主要介绍了Ruby的语法和语言特性总结,包括代码块与元编程等Ruby编程中的核心特性,需要的朋友可以参考下
    2016-06-06
  • 最新的CocoaPods安装教程

    最新的CocoaPods安装教程

    写一篇文章完整地记录一下自己的CocoaPods安装过程,并收集了一些安装过程常见的错误供大家参考。
    2017-12-12
  • Ruby3多线程并行Ractor使用方法详解

    Ruby3多线程并行Ractor使用方法详解

    这篇文章主要介绍了Ruby3多线程并行Ractor使用方法详解,Ruby3之前使用Thread来创建新线,Ruby3通过Ractor支持真正的多线程并行,多个Ractor之间可并行独立运行程,需要的朋友可以参考下
    2022-04-04

最新评论