C++ Language/Std/Multithreading/Semaphores/RingBuffer

In an architecture where one thread produces a stream of products while another thread consumes those products, putting a "ring buffer" between the threads will allow variation in the pace of production and consumption.

Additional information about ring buffers