CyclicBarrier
A synchronization abstraction that allows a set of fibers to wait until they all reach a certain point.
A cyclic barrier is initialized with a positive integer capacity n and a fiber waits by calling await, at which point it is semantically blocked until a total of n fibers are blocked on the same cyclic barrier.
At this point all the fibers are unblocked and the cyclic barrier is reset, allowing it to be used again.