class Async::Barrier
A semaphore is used to control access to a common resource in a concurrent system. A useful way to think of a semaphore as used in the real-world systems is as a record of how many units of a particular resource are available, coupled with operations to adjust that record safely (i.e. to avoid race conditions) as units are required or become free, and, if necessary, wait until a unit of the resource becomes available.
def async(*arguments, parent: (@parent or Task.current), **options, &block)
def async(*arguments, parent: (@parent or Task.current), **options, &block) task = parent.async(*arguments, **options, &block) @tasks << task return task end
def empty?
def empty? @tasks.empty? end
def initialize(parent: nil)
def initialize(parent: nil) @tasks = [] @parent = parent end
def size
def size @tasks.size end
def wait
def wait while task = @tasks.shift task.wait end end