class Concurrent::CountDownLatch


Allows fibers to wait until a series of operations performed in other fibers complete.

This class has additional capabilities not found in java or other implementations:

A single atomic counter is used. This implementation is 30-40% faster than using a Mutex or Channel::Buffered on Crystal 0.29.0-dev and likely to be faster still when channels are thread safe.

Defined in:



Instance Method Summary

Constructor Detail

def = 0) #

[View source]

Instance Method Detail

def count #

Current count.

[View source]
def count_down : Nil #

[View source]
def count_up(n = 1) : Nil #

[View source]
def error(ex : Exception) : Nil #

Use instead of count_down. Stores the first error and raises it when #wait is called.

[View source]
def reset #

Only call reset after latch is released or after initialize. Undefined behavior if called between use of count_down and release.

[View source]
def wait : self #

Wait until count_down has been called wait_count times.

TODO timeout

[View source]
def wait_count : Int32 #

[View source]
def wait_count=(wait_count : Int32) : Int32 #

Must be set exactly once and only if not supplied to #initialize

[View source]