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