読者です 読者をやめる 読者になる 読者になる

Pure Ruby Queue

Pure Ruby Queue sample

Threadを使ってQueueを書いてみた。

Queueってもっとmutexとか条件変数とかで難しい作りになってそうとおもってコード読んでみたら、ただのStructを継承したオブジェクトでコードも短かった。

これならRubyだけで書けるのでは〜と思ったのでCを読みながらRubyで書きなおしてみた。

「自分は寝る(Thread.stop)」と「こいつをたたき起こす(Thread#wakeup)」があれば出来る仕組みということがわかった。

明日はRWC。

というか元々Rubyで書かれていたものをCで書き直されたのですねー。

* common.mk: use RUNRUBY instead of MINIRUBY because MINIRUBY can't · e334bb2 · ruby/ruby · GitHub

こっちはmutexやらcondやら使ってたっぽい。