Ruby1.8でのコルーチンの実装を考える

実装はできそうだけど、ネイティブスレッドを使うのは危険かなぁ。

corutine = Corutine.create do |c| # コルーチンスレッドの生成、メインスレッドの取得
  loop do
    puts ''
    c.suspend # メインスレッドに制御を移す
    puts ''
    c.suspend
    puts ''
    c.suspend
    puts ''
    c.suspend
  end
end

loop do
  corutine.call # コルーチンスレッドに制御を移す
  gets
end

追記
拡張ライブラリ内だとスレッドはノンプリエンティブだったはずだから、普通にRubyのスレッドを生成してやれば、コルーチンを実装できる…かな?