Class: Queue
Constant Summary collapse
- CLOSE_MESSAGE =
Object.new
Instance Method Summary collapse
- #close ⇒ Object
- #closed? ⇒ Boolean
- #pop_with_close(non_block = false) ⇒ Object
- #push_with_close(arg) ⇒ Object
Instance Method Details
#close ⇒ Object
33 34 35 36 37 38 39 40 41 42 |
# File 'lib/backports/2.3.0/queue/close.rb', line 33 def close @closed = true 2.times do Thread.pass num_waiting.times do push_without_close CLOSE_MESSAGE end end self end |
#closed? ⇒ Boolean
44 45 46 |
# File 'lib/backports/2.3.0/queue/close.rb', line 44 def closed? !!defined?(@closed) end |
#pop_with_close(non_block = false) ⇒ Object
19 20 21 22 23 24 25 26 27 |
# File 'lib/backports/2.3.0/queue/close.rb', line 19 def pop_with_close(non_block = false) begin r = pop_without_close(non_block || closed?) r unless CLOSE_MESSAGE == r rescue ThreadError raise if non_block || !closed? end end |
#push_with_close(arg) ⇒ Object
10 11 12 13 14 |
# File 'lib/backports/2.3.0/queue/close.rb', line 10 def push_with_close(arg) raise ClosedQueueError, 'queue closed' if closed? push_without_close(arg) end |