タグ

ブックマーク / www.xmisao.com (1)

  • Rubyの軽量スレッドFiberを利用する -- ぺけみさお

    パーフェクトRubyを読んでいて目に止まったので、Ruby 1.9から導入すあれた軽量スレッドFiberを使ってみよう。 ThreadとFiberの最大の違いは、コンテキストの切り替えをプログラマが明示的に指定することだ。 Fiberを使えば、結果全体を作るのに大きなコストのかかる処理を段階的に実行させて、部分的な結果を随時取り出すような実装が可能になる。 FiberはFiber.newで生成し、ブロックでFiberで実行する処理内容を記述する。Fiberの実行はFiber#resumeの呼び出しで行う。処理はFiber.yieldでいったん停止して、呼び出し元に戻る。停止したFiberの再実行は、同じくFiber#resumeで行う。実行できる処理がなくなった状態でFiber#resumeを呼び出すと、FiberErrorが発生する。 fiber = Fiber.new do puts

  • 1