Using semaphores for synchronization is the traditional way to present the solutions. There are four types of the classical problem of synchronization, and these are the following:
Four types of the classical problem of synchronization
1). Bound buffer problem
It is also named as Producer-consumer problem. A bounded buffer allows many producers and many consumers to share an individual buffer. From the buffer, producers write data, and consumers read data. Producers have to block when the buffer is full. Consumers have to block when the buffer is empty.
2). Sleeping barber problem
It is synchronization and inter-process communication problem. This problem is based on barbershops. A barbershop has a single barber, single barber chair and n number of chairs for customers. When there is no customer in the barbershop, then the barber sleeps. When a customer comes, he has to get up the barber. When there are multiple customers, and the barber is cutting one customer’s hair, the entire customer either waits for their number or quits when all the chairs are full.
3). Dining Philosopher problem
In this classical problem of synchronization, there are five philosophers are sitting around a dining table, and their work is eating and thinking. A dish of noodles is kept at the center of the table with five chopsticks. A philosopher can only eat when both left and right chopsticks are present. In the condition when both left and right chopsticks are not present, the philosopher takes down their chopsticks and again starts thinking.
4). Readers and Writers problem
The readers and writers problem based on an object like a file that is shared in different processes. Some processes are readers so that they can only read the data, and some processes are writers so that they can only write the data. This problem is generally used to manage synchronization. This problem can be implemented by using semaphores.