static void Main(string[] args) { /*Quando o programa inicia ja cria-se o arquivo de saída.*/ FileStream arquivo = new FileStream("Out.txt", FileMode.Create); arquivo.Close(); /*A fila é preenchida com os índices do pool (A fila sempre deve conter os mesmos indices segundo o tamanho do pool).*/ Console.WriteLine("========================="); Console.WriteLine("Disparando requisições..."); Console.WriteLine("========================="); for (int i = 0; i < pool.Length; i++) { fila.Enfileirar(i); } /*Dispara o metodo de gerar requisição a cada 1 segundo durante o intervalo do for.*/ for (int i = 1; i <= 60; i++) { CriarRequisicao(i); Console.Title = "Tempo: " + i; Thread.Sleep(1000); } /*Após o término da geração de requisições aguarda até a ultima thread ser executada, quando a fila tem o mesmo * tamanho do pool significa que todos os índices estão disponíveis.*/ Console.WriteLine("=========================\n" + "Aguardando a última thread ser atendida...." + "\n========================="); while (fila.GetTamanho() != pool.Length) { //Espera } /*Ao final do programa é impresso a quantidade de threads negadas, atendidas e finalizadas.*/ Console.WriteLine("========================="); Console.WriteLine("======= RESULTADO ======="); Console.WriteLine("========================="); Console.WriteLine("Negadas: " + perdidas); Console.WriteLine("Atendidas: " + finalizadas); Console.WriteLine("Inicializadas: " + inicializadas); Console.WriteLine("Concluídas: " + finalizadas); Console.ReadKey(); }