class ActionPool::Queue
Adds a little bit extra functionality to the Queue
class
Public Class Methods
new()
click to toggle source
Create a new Queue
for the ActionPool::Pool
Calls superclass method
# File lib/woolen_common/actionpool/queue.rb, line 7 def initialize super @wait = false @pause_guard = Splib::Monitor.new @empty_guard = Splib::Monitor.new end
Public Instance Methods
clear()
click to toggle source
Clear queue
Calls superclass method
# File lib/woolen_common/actionpool/queue.rb, line 32 def clear super @empty_guard.broadcast end
pause()
click to toggle source
Stop the queue from returning results to requesting threads. Threads will wait for results until signalled
# File lib/woolen_common/actionpool/queue.rb, line 15 def pause @wait = true end
pop()
click to toggle source
Check if queue needs to wait before returning
Calls superclass method
# File lib/woolen_common/actionpool/queue.rb, line 25 def pop @pause_guard.wait_while{ @wait } o = super @empty_guard.broadcast if empty? return o end
unpause()
click to toggle source
Allow the queue to return results. Any threads waiting will have results given to them.
# File lib/woolen_common/actionpool/queue.rb, line 20 def unpause @wait = false @pause_guard.broadcast end
wait_empty()
click to toggle source
Park a thread here until queue is empty
# File lib/woolen_common/actionpool/queue.rb, line 37 def wait_empty @empty_guard.wait_while{ size > 0 } end