Example #1
0
        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! :(");
            }
        }