スレッド
require "thread.rb" #for SizedQueue p Thread.main p thmain = Thread.current #mainのはず. queue = SizedQueue.new(10) #スレッド間受け渡しのためにQueueを用意. p th = Thread.start{ i = 0 p th_self = Thread.current while 1 queue.push(i) i += 1 sleep #何故かstopだと上手くいかない. end } while 1 str = gets if (str != "\n");break;end #Enterのみで継続. th.run #sleepしていたthreadを起こす print queue.pop #もし空ならなにか入るまで待つ. end
スレッド間の値のやり取りは大域変数でも良いが、一応Queueを用意してみた。
本ではMutexをお勧めされていたけど使ったことが無いのでパス。