resume(*arg = nil) -> object
[permalink][rdoc][edit]-
自身が表すファイバーへコンテキストを切り替えます。自身は resume を呼んだファイバーの子となります。
ただし、Fiber#transfer を呼び出した後に resume を呼び出す事はできません。
- [PARAM] arg:
- self が表すファイバーに渡したいオブジェクトを指定します。
- [RETURN]
- コンテキストの切り替えの際に Fiber.yield に与えられた引数を返します。ブロックの終了まで実行した場合はブロックの評価結果を返します。
- [EXCEPTION] FiberError:
- 自身が既に終了している場合、コンテキストの切替が Thread クラスが表すスレッド間をまたがる場合、自身が resume を呼んだファイバーの親かその祖先である場合に発生します。また、Fiber#transfer を呼び出した後に resume を呼び出した場合に発生します。
例:
f = Fiber.new do Fiber.yield(:hoge) :fuga end p f.resume() #=> :hoge p f.resume() #=> :fuga p f.resume() #=> FiberError: dead fiber called