class Concurrent::WaitableList
def delete(value)
def delete(value) @mutex.synchronize { @list.delete(value) } end
def empty?
def empty? @mutex.synchronize { @list.empty? } end
def initialize
def initialize @mutex = Mutex.new @condition = Condition.new @list = [] end
def put(value)
def put(value) @mutex.synchronize do @list << value @condition.signal end end
def size
def size @mutex.synchronize { @list.size } end
def take
def take @mutex.synchronize do @condition.wait(@mutex) while @list.empty? @list.shift end end