Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【Ruby3.x】Fiber::schedule()メソッドの使い方

scheduleメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

scheduleメソッドは、Ruby 3で導入されたFiberスケジューラ機能と連携し、ファイバーの実行フローを管理するためのメソッドです。このメソッドはFiberクラスのクラスメソッドであり、直接ファイバーをスケジュールするのではなく、現在Rubyインタプリタに設定されているスケジューラに対して、処理のブロックや待機を通知する役割を担います。

具体的には、Fiber.set_scheduler メソッドによってカスタムスケジューラが設定されている場合、Fiber.schedule はそのスケジューラの block メソッドを呼び出します。これにより、カスタムスケジューラは非同期I/O操作などの完了を待つ間に、他のファイバーに制御を移すといった協調的マルチタスク処理を実現できます。この仕組みは、Webサーバーやデータベースクライアントなど、外部リソースとのやり取りで待機が発生しやすいアプリケーションで特に有効です。

もし、事前にFiber.set_schedulerでスケジューラが設定されていない状態でFiber.scheduleを呼び出すと、FiberError 例外が発生します。これは、スケジューラが未設定の状態ではファイバーのブロック処理を適切に管理できないためです。

この機能は、ノンブロッキングなI/O処理やイベントループベースのアプリケーションにおいて、複数のファイバーを効率的に協調動作させるために使用されます。これにより、アプリケーション全体の応答性を維持しつつ、並行処理をよりシンプルに記述することが可能になります。

構文(syntax)

1Fiber.schedule do |fiber|
2  # スケジューリングロジック
3end

引数(parameters)

*rest, &block

  • *rest: Fiber をスケジューリングする際に渡される任意の引数
  • &block: Fiber が実行される際に評価されるブロック

戻り値(return)

Object

Fiber#scheduleメソッドは、実行が中断されたFiberを再開させ、そのFiberが中断される直前の式の結果を返します。

関連コンテンツ