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やら使ってたっぽい。