pop(non_block = false, timeout: nil) -> object | nilRuby 2.1.0 から[permalink][rdoc][edit]shift(non_block = false, timeout: nil) -> object | nildeq(non_block = false, timeout: nil) -> object | nil-
キューからひとつ値を取り出します。キューに push しようと待っているスレッドがあれば、実行を再開させます。
timeoutを指定した場合は、その秒数が経過してもキューが空のままであれば、nilを返します。- [PARAM]
non_block: - true を与えると、キューが空の時に例外 ThreadError が発生します。
- [PARAM]
timeout: -
待つ秒数を数値で指定します。
nilの場合は無期限に待ちます。non_blockが真のときに指定することはできません。 - [EXCEPTION]
ArgumentError: -
non_blockが真のときにtimeoutを指定した場合に発生します。
例: nonblock = trueq = Thread::SizedQueue.new(4) th1 = Thread.start do while resource = q.pop puts resource end end [:resource1, :resource2, :resource3, nil].each{|r| q.push(r) } p th1.join # => resource1 # resource2 # resource3q = Thread::SizedQueue.new(4) th1 = Thread.start do while resource = q.pop puts resource end end [:resource1, :resource2, :resource3, nil].each{|r| q.push(r) } begin th1.join q.pop(true) rescue => e p e p e.message end # => resource1 # resource2 # resource3 # => #<ThreadError: queue empty> # => "queue empty"[SEE_ALSO] Thread::Queue#pop
- [PARAM]