A latch is a thread coordination mechanism
that allows any number of threads to block
until an expected number of threads arrive at the latch
(via the
count_down function)
. The expected count is set when the latch is created
. An individual latch is a single-use object;
once the expected count has been reached, the latch cannot be reused
.