スレッドのキュー。
成果物
情報源
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
しなきゃ使えないのって組込ライブラリなの? 標準添付ライブラリでは?
対象環境
- Raspbierry pi 4 Model B
- Raspberry Pi OS buster 10.0 2020-08-20 ※
- bash 5.0.3(1)-release
- Ruby 3.0.2
$ uname -a Linux raspberrypi 5.10.52-v7l+ #1441 SMP Tue Aug 3 18:11:56 BST 2021 armv7l GNU/Linux