int chairs = n;
semaphore cust = 0;
semaphore mutex = 1;
int waiting = 0;
cust()
{
p(mutex);
if(waiting < chairs)
{
waiting ++;
v(cust);
v(mutex);
p(barber);
hair-cut();
}
else
{
v(mutex);
}
}
semaphore barber = 0;
barber()
{
while(true)
{
p(cust);
p(mutex);
waiting --;
v(barber);
v(mutex);
}
}