あーるPG - 社会人のデジタル生活

日曜プログラマになろうかなーと思った30代理系社会人の、キャリアアップや趣味(特にデジタル情報)の記録。らーめんとビールが好き。

スレッド

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をお勧めされていたけど使ったことが無いのでパス。