Example: Bounded Buffer Problem
The Problem:
There is a buffer shared by producer processes, which insert into it, and consumer processes, which remove from it.
The processes are concurrent, so we must control their access to the (shared) variables that describe the state of the buffer.