2010-07-29
■ [ruby] FiberをRuby 1.8にバックポートするfiber18
Ruby 1.9のFiberを、1.8のThreadを使って実装したものらしい。
1.9のThreadはネイティブスレッドだけど、1.8のThreadはグリーンスレッド(自前実装)なので、実は1.9のFiberとよく似てるのである。
違いと言えば、Threadは勝手に切り替わるけど、Fiberは明示的にFiber.yieldを呼ばないと切り替わらない。後者で前者を実装することはできないが、逆は可能であると。
ソースはこちら:
threadライブラリのQueueクラスを使っているようだ。 Queueは、ただのキューではなく、空のときにpopしようとするとブロックする。
参考