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

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

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

作成日: 更新日:

基本的な使い方

num_waitingメソッドは、RubyのThread::SizedQueueクラスに属し、キューから要素を取り出すために現在待機しているスレッドの数を取得するメソッドです。

Thread::SizedQueue は、複数のスレッド間でデータを安全にやり取りするために使用される、要素数に上限が設定された特別なキューです。このキューは、設定された上限数を超えて要素を格納することはできません。そのため、キューがいっぱいの状態でさらに要素を追加しようとすると、キューに空きができるまで、その操作を行ったスレッドは処理を一時停止し、待機状態となります。同様に、キューが空の状態で要素を取り出そうとした場合も、キューに要素が追加されるまで、その操作を行ったスレッドは待機することになります。

num_waiting メソッドは、上記のうち、特に「キューにデータが入るのを待っているスレッド」、すなわちpopshiftといった要素を取り出す操作を実行して停止しているスレッドの総数を整数値で返します。この情報は、アプリケーションのスレッド間の連携がスムーズに行われているか、あるいはどこかでスレッドがブロックされているかを監視する際に非常に有用です。例えば、この値が高い状態が続く場合、キューにデータを供給する側のスレッドが十分な速さで要素を追加できていない可能性が考えられ、システムのパフォーマンスボトルネックの特定に役立ちます。

構文(syntax)

1require 'thread'
2
3queue = Thread::SizedQueue.new(1)
4Thread.new { queue.pop }
5Thread.new { queue.pop }
6sleep(0.1)
7puts queue.num_waiting

引数(parameters)

引数なし

引数はありません

戻り値(return)

Integer

Thread::SizedQueue#num_waiting は、キューで待機しているスレッドの数を整数で返します。

関連コンテンツ