Queue

루비 | 2009/09/22 14:14 | Posted by DMW
크리에이티브 커먼즈 라이선스
Creative Commons License

블로그를 방치해 두기 뭐해서 찌끌여 본다능. thread 패키지?? 아무튼 thread를 require 하면 Queue 클래스를 쓸 수 있다능. 매우매우 고맙게도 스레드 세이프하다능. >_<

#!/usr/local/bin/ruby
require 'thread'

queue = Queue.new

producer = Thread.new do
    5.times do |i|
        sleep rand(i) # simulate expense
        queue << i
        puts "#{i} produced"
    end
end

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

producer.join
consumer.join


실행결과
1
2
3
4
5
6
7
8
9
10
0 produced
1 produced
consumed 0
consumed 1
2 produced
3 produced
consumed 2
4 produced
consumed 3
consumed 4


코드 패드에서는 퍼미션 문제로 실행은 안되고...로컬에서 돌린걸 붙여넣었다능
저작자 표시 비영리 동일 조건 변경 허락

'루비' 카테고리의 다른 글

SWIG Ruby  (0) 2010/03/29
중위표현식을 후위포현식으로 바꾸기  (0) 2009/11/28
Queue  (6) 2009/09/22
tmpdir  (0) 2009/06/20
BitArray from sloth  (3) 2009/03/17
ruby 숫자에 세자리마다 쉼표를 집어넣기  (0) 2008/11/05
TAG , ,

댓글을 달아 주세요

  1. Favicon of http://bab2min.tistory.com BlogIcon 적분 2009/09/29 22:38  댓글주소  수정/삭제  댓글쓰기

    오옷 저렇게 간단한 쓰레드 프로그래밍이!

  2. 성대아싸 2009/09/29 23:05  댓글주소  수정/삭제  댓글쓰기

    우왕 횽님 루비 좋습니카?

    • Favicon of http://www.filepang.co.kr BlogIcon DMW 2009/09/30 07:36  댓글주소  수정/삭제

      루비는 관용입니다.
      루비는 그 무엇도 당신에게 강요하지 않습니다.
      때문에 루비스트는 자유롭습니다.

      읭읭

  3. sheep 2009/10/06 01:39  댓글주소  수정/삭제  댓글쓰기

    와웅 디엠언니
    블로그만 살리시지말고
    게임접속도 좀 해서 살려달라능