On 11/23/2013 08:30 PM, Glass_saga (Masaki Matsushita) wrote: > I think we can't change default behavior of Queue#pop(true) because some code expects ThreadError to be raised. > However, it may be possible to introduce new keyword argument like following: > > q = Queue.new > while next_item = q.pop(true, exception: false) # it doesn't raise ThreadError and returns nil. > # do something > end Or what about a new method, Queue#pop?, which is always non-blocking and non-raising. It would behave like: class Queue def pop? pop(true) rescue ThreadError nil end end q = Queue.new q << 1 q << 2 q << 3 while x=q.pop? p x end __END__ output: 1 2 3