class Garcon::WaitableList

Public Class Methods

new() click to toggle source
# File lib/garcon/task/waitable_list.rb, line 25
def initialize
  @mutex = Mutex.new
  @condition = Condition.new

  @list = []
end

Public Instance Methods

delete(value) click to toggle source
# File lib/garcon/task/waitable_list.rb, line 47
def delete(value)
  @mutex.synchronize { @list.delete(value) }
end
empty?() click to toggle source
# File lib/garcon/task/waitable_list.rb, line 36
def empty?
  @mutex.synchronize { @list.empty? }
end
put(value) click to toggle source
# File lib/garcon/task/waitable_list.rb, line 40
def put(value)
  @mutex.synchronize do
    @list << value
    @condition.signal
  end
end
size() click to toggle source
# File lib/garcon/task/waitable_list.rb, line 32
def size
  @mutex.synchronize { @list.size }
end
take() click to toggle source
# File lib/garcon/task/waitable_list.rb, line 51
def take
  @mutex.synchronize do
    @condition.wait(@mutex) while @list.empty?
    @list.shift
  end
end