class Async::PriorityQueue
def enqueue(*items)
Add multiple items to the queue.
def enqueue(*items) @mutex.synchronize do if @closed raise ClosedError, "Cannot enqueue items to a closed queue." end @items.concat(items) # Wake up waiting fibers in priority order, skipping dead/invalid waiters: while !@items.empty? && (waiter = @waiting.pop) if waiter.valid? value = @items.shift waiter.signal(value) end # Dead/invalid waiter discarded, continue to next one. end end end