Exemplo n.º 1
0
        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();
        }