public void TBarbeiro() { while (true) { if (FilaClientes.Count == 0 && !Barbeiro1.Dormindo) { Console.WriteLine("\nNão há clientes na fila. Thread do barbeiro será bloqueada"); Barbeiro1.Dormir(); } semaphoreBarbeiro.WaitOne(); mutex.WaitOne(); Cliente clienteFazendoBarba = FilaClientes.Dequeue(); //tira cliente da fila mutex.ReleaseMutex(); Barbeiro1.FazerBarba(clienteFazendoBarba); //Barbeiro faz a barba do cliente semaphoreClientes.Release(); //incrementa no semaforo de clientes } }