As the first of the three most common "classical synchronization problems", the producer-consumer problem (or bounded-buffer problem) is an important model for understanding concurrency and synchronization. This also introduces the syntax for a mutex.