Ruby 2.4.0 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > Thread::Queueクラス

class Thread::Queue

クラスの継承リスト: Thread::Queue < Object < Kernel < BasicObject
aliases: 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 -> Thread::Queue

新しいキューオブジェクトを生成します。

インスタンスメソッド

定義 説明
push(value) -> ()
self << value -> ()
enq(value) -> ()

キューの値を追加します。待っているスレッドがいれば実行を再開 させます。返り値は不定です。

clear -> ()

キューを空にします。返り値は不定です。

close -> self

キューを close します。close 済みのキューを再度 open することはできません。

closed? -> bool

キューが close されている時に true を返します。

pop(non_block = false) -> object
shift(non_block = false) -> object
deq(non_block = false) -> object

キューからひとつ値を取り出します。キューが空の時、呼出元のスレッドは停止します。

empty? -> bool

キューが空の時、真を返します。

length -> Integer
size -> Integer

キューの長さを返します。

num_waiting -> Integer

キューを待っているスレッドの数を返します。

継承したメソッド

! != __id__ instance_eval instance_exec method_missing singleton_method_added singleton_method_removed singleton_method_undefined !~ <=> == === =~ __send__ _dump class clone define_singleton_method display enum_for eql? equal? extend freeze frozen? hash initialize initialize_copy inspect instance_of? instance_variable_defined? instance_variable_get instance_variable_set instance_variables is_a? itself marshal_dump marshal_load method methods nil? object_id pretty_inspect pretty_print pretty_print_cycle pretty_print_inspect pretty_print_instance_variables private_methods protected_methods psych_to_yaml public_method public_methods public_send remove_instance_variable respond_to? respond_to_missing? singleton_class singleton_method singleton_methods taint tainted? tap to_a to_ary to_hash to_int to_io to_proc to_regexp to_s to_str trust untaint untrust untrusted? .yaml_tag ::ARGF ::ARGV ::DATA ::ENV ::FALSE ::NIL ::RUBY_COPYRIGHT ::RUBY_DESCRIPTION ::RUBY_ENGINE ::RUBY_PATCHLEVEL ::RUBY_PLATFORM ::RUBY_RELEASE_DATE ::RUBY_REVISION ::RUBY_VERSION ::SCRIPT_LINES__ ::STDERR ::STDIN ::STDOUT ::TOPLEVEL_BINDING ::TRUE