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

【Ruby3.x】Thread::Queue::pop()メソッドの使い方

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

作成日: 更新日:

基本的な使い方

popメソッドは、RubyのThread::Queueオブジェクトから要素を取り出すメソッドです。Thread::Queueは、複数のスレッド間でデータを安全にやり取りするためのキュー(待ち行列)を提供する、Rubyに組み込まれているクラスです。このpopメソッドを呼び出すと、キューの先頭にある要素が取り出され、その要素が返されます。

もしキューが現在空の場合、popメソッドは、新しい要素がキューに追加されるまで、呼び出し元のスレッドを一時的に停止(ブロック)させます。これにより、複数のスレッドが同時にキューにアクセスしてもデータが壊れることがなく、安全に要素を処理できる「スレッドセーフ」な運用が保証されます。

特定の状況でブロックを避けたい場合は、pop(non_block: true)という引数を指定できます。この場合、キューが空であればメソッドはブロックせずに、直ちにThreadErrorというエラーを発生させます。また、pop(timeout: 秒数)のようにタイムアウト時間を指定することも可能です。指定した秒数だけ待ってもキューに要素が追加されなかった場合、メソッドはブロックを解除し、nilを返します。この機能により、スレッドが無期限に停止するのを防ぎ、処理の柔軟性が高まります。popメソッドは、スレッド間の同期やデータ連携において非常に重要な役割を担います。

構文(syntax)

1require 'thread'
2
3queue_instance = Thread::Queue.new
4element = queue_instance.pop

引数(parameters)

non_block = false, timeout: nil

  • non_block: boolean: ブロッキングせずに要素を取得しようとするかどうか (デフォルトは false)
  • timeout: Integer | nil: 要素が利用可能になるまで待機する最大秒数 (nil の場合は無制限)

戻り値(return)

Object

キューから要素を1つ取り出し、その要素を返します。キューが空の場合は、要素が追加されるまでブロックされます。

関連コンテンツ