実装はできそうだけど、ネイティブスレッドを使うのは危険かなぁ。
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のスレッドを生成してやれば、コルーチンを実装できる…かな?