close -> self
[permalink][rdoc][edit]-
キューを close します。close 済みのキューを再度 open することはできません。
close 後は以下のように動作します。
- Thread::Queue#closed? は true を返します
- Thread::Queue#close は無視されます
- Thread::Queue#enq/push/<< は ClosedQueueError を発生します
- Thread::Queue#empty? が false を返す場合は Thread::Queue#deq/pop/shift は通常通りオブジェクトを返します
また、ClosedQueueError は StopIteration を継承しているため、 close する事でループから脱出する事もできます。
例:
q = Queue.new Thread.new{ while e = q.deq # wait for nil to break loop # ... end } q.close