Last Updated: February 2, 2026
The Cigarette Smokers Problem is one of the trickiest classic concurrency problems. Introduced by Suhas Patil in 1971, it appears deceptively simple but reveals deep insights about conditional synchronization.
What makes this problem fascinating is that the "obvious" solution doesn't work. You can't simply have smokers check the table because checking requires looking at multiple resources atomically.
This problem teaches why intermediate helper threads or careful condition design are sometimes necessary, a pattern that appears in event dispatching, resource matching, and publish-subscribe systems.