Function BlockingQueue.waitPop
Waits for the next FIFO value or for final queue closure.
Returns
A result with status value and the removed element when work is
available. Returns status closed with T only after close has
been called and every value queued before close has been drained.
Blocking
Sleeps only while the queue is empty and still open. Spurious condition wakes are harmless because the state predicate is always re-checked in a loop.
Allocation
Does not resize or reacquire queue backing storage.
Thread Safety
May be called concurrently by multiple consumers and producers.