Ruby 1.9.2 リファレンスマニュアル > ライブラリ一覧 > threadライブラリ > Queueクラス

class Queue

クラスの継承リスト: Queue < Object < Kernel < BasicObject

要約

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

最大サイズが指定できるQueueのサブクラス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

新しいqueueオブジェクトを生成します。

インスタンスメソッド

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

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

clear

queue を空にします。返り値は不定です。

pop(non_block = false)
shift(non_block = false)
deq(non_block = false)

queueからひとつ値を取り出します。queueが空の時、呼出元のスレッ ドは停止します。non_block に true を与えると、 queueが空の時に例外 ThreadError が発生します。

empty?

queueが空の時、真を返します。

length
size

queueの長さを返します。

num_waiting

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

継承したメソッド

! != == === =~ __id__ __send__ _dump class clone dclone display enum_for eql? equal? extend freeze frozen? hash initialize initialize_copy inspect instance_eval instance_exec instance_of? instance_variable_defined? instance_variable_get instance_variable_set instance_variables is_a? marshal_dump marshal_load method method_missing methods must_be must_be_close_to must_be_empty must_be_instance_of must_be_kind_of must_be_nil must_be_same_as must_be_within_epsilon must_equal must_include must_match must_raise must_respond_to must_send must_throw nil? pretty_inspect pretty_print pretty_print_cycle pretty_print_inspect pretty_print_instance_variables private_methods protected_methods public_methods remove_instance_variable respond_to? respond_to_missing? singleton_class singleton_method_added singleton_method_removed singleton_method_undefined singleton_methods taint tainted? tap to_a to_ary to_hash to_int to_io to_proc to_regexp to_s to_str to_yaml to_yaml_properties to_yaml_style trust untaint untrust untrusted? wont_be wont_be_close_to wont_be_empty wont_be_instance_of wont_be_kind_of wont_be_nil wont_be_same_as wont_be_within_epsilon wont_equal wont_include wont_match wont_respond_to