public void CustomersWait() { Utils.CustomerSeats.WaitOne(); ConsoleHelper.WriteCustomerArrive(); if (Utils.WaitingRoomSeats > 0) { ConsoleHelper.WriteCustomerWait(); Utils.WaitingRoomSeats -= 1; Utils.WaitingRoom.AddLast(Thread.CurrentThread); Utils.CustomerSeats.Release(); Utils.CustomerReady.Release(); if (barber.isSleeping) { barber.WakeUp(); } Utils.BarberReady.WaitOne(); ConsoleHelper.WriteCustomerComplete(); } else { Utils.CustomerSeats.Release(); ConsoleHelper.WriteCustomerGone(); } }
public void Arrive(Costumer c) { Console.WriteLine($"Costumer {c.Name} has arrived!"); if (WaitingRoom.Count() < waitingRoomSize) { WaitingRoom.Add(c); if (barber.IsSleeping) { Console.WriteLine($"Waking up the barber..."); barber.WakeUp(); } else { Console.WriteLine($"Barber is buzzy. {c.Name} it's waiting on {WaitingRoom.Count} chair."); } } else { Console.WriteLine($"The BarberShop is full! {c.Name} left! :("); } }