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.