There is a buffer in which a producer puts its products and a consumer which takes the products from it. The producer cannot put a product in a full buffer and a consumer cannot take a product from an empty buffer. Also, the buffer is a critical section that both the producer and the consumer cannot put and take the products in/of the buffer at the same time.