A concurrency problem in computer science
Consider a system with three smoker processes and one agent process. One of the smoker processes has paper, another has tobacco, and the third has matches. The agent places two of the ingredients on the table. The smoker who has the remaining ingredient then makes and smoke a cigarette, signaling the agent on completion. The agent then puts out another two of the three ingredients, and the cycle repeats.
Smoker 1 has tobacco
Smoker 2 has papers
Smoker 3 has matches
Agent supplies -