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(?boolish non_block, ?timeout: _ToF?) → Elem?-
キューからひとつ値を取り出します。キューが空の時、呼出元のスレッドは停止します。
timeoutを指定した場合は、その秒数が経過してもキューが空のままであれば、停止をやめてnilを返します。- [PARAM]
non_block: - true を与えると、キューが空の時に例外 ThreadError が発生します。
- [PARAM]
timeout: -
待つ秒数を数値で指定します。
nilの場合は無期限に待ちます。non_blockが真のときに指定することはできません。 - [EXCEPTION]
ArgumentError: -
non_blockが真のときにtimeoutを指定した場合に発生します。
例: nonblock = trueq = Thread::Queue.new th1 = Thread.start do while resource = q.pop puts resource end end [:resource1, :resource2, :resource3, nil].each { |r| q.push(r) } th1.joinq = Thread::Queue.new 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" - [PARAM]