やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

組込ライブラリ(Thread::Queue)

 スレッドのキュー。

成果物

情報源

Thread::Queue

Queue はスレッド間の FIFO(first in first out) の通信路です。スレッドが空のキューを読み出そうとすると停止します。キューになんらかの情報が書き込まれると実行は再開されます。

最大サイズが指定できる Queue のサブクラス Thread::SizedQueue も提供されています。

require 'thread'

q = Queue.new

th1 = Thread.start do
  while resource = q.pop
    puts resource
  end
end

[:resource1, :resource2, :resource3, nil].each{|r|
  q.push(r)
}

th1.join

実行すると以下のように出力します。

$ ruby que.rb
resource1
resource2
resource3

メンバ抜粋

特異メソッド

new

インスタンスメソッド

<< clear close closed? deq empty? enq length num_waiting pop push shift size
メソッド 概要
<<,push,enq キューへ追加する
pop,shift,deq キューから取り出す
size,length キューの要素数を返す

所感

 requireしなきゃ使えないのって組込ライブラリなの? 標準添付ライブラリでは?

対象環境

$ uname -a
Linux raspberrypi 5.10.52-v7l+ #1441 SMP Tue Aug 3 18:11:56 BST 2021 armv7l GNU/Linux