fiberとprocについて・・・その1

fiberは1.9から追加された機能です。
でprocと似ているのですが、微妙に違います。

$:.unshift(File.dirname(__FILE__))

fi = Fiber.new do |first|
  # 処理
  second = Fiber.yield("#{first}!")
  "#{first}, #{second}"
end

puts fi.resume('hello')
puts fi.resume('world')

proc = Proc.new do |text|
  "Hello#{text}"
end
puts proc.call("!")
puts proc.call(', world!')
proc.call

上記のコード例でいうとfiberでは「Fiber.yield が実行されたタイミングで resume メソッドの呼び出し元に処理が戻り、戻り値は Fiber.yield の引数 "#{first}!" すなわち "Hello!" になります。」ということらしい。。。ちょっとここがまだピンとこないので、もう少し学習してから加筆しよう。

procの方がcallメソッドが呼ばれるタイミングで内部の処理がそれぞれ呼ばれる。。うん、こっちは分かる。

fiberの方はもうちょっとみてから再度まとめようー