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
.