programação concorrente
Belo Horizonte
2013
Análise
A quantidade de Pedidos Processados está diretamente ligado ao número de Threads em execução, o que podemos comprovar no gráfico e na tabela. A medida em que se aumenta o número de Thread, o número de pedidos também aumenta.
O número de pedidos processados aumento consideravelmente a medida que aumentos o número de Threads.
Número de Threads
Pedidos Consumidos em 3 minutos
Média de Pedido por Segundo
1
18
0,1
50
843,4
4,88
100
1701
9,45
500
8491,6
47,211
100
16560,3
91,998
1.1 Tabela Pedidos Processados
1.2 Gráfico comparativo Pedidos
Código
using System; using System.Threading; using System.Collections; using System.Collections.Generic;
public class ExemploSemaforo
{
//DECLARACAO DO SEMAFARO private static Semaphore Pool;
//este flag é apenas para indicar que estamos na thread // então temos que chamar o waitOne nos métodos private static bool flag = false;
public static void Main() { Console.WriteLine("Programa Iniciado");
ThreadProcessaPedido(); Console.ReadKey(); }
/// /// Este método chama as threads ///
private static void ThreadProcessaPedido() { int[] pedidos = new int[500];
Console.WriteLine("Processando Pedidos");
flag = true;
//PRIMEIRO PARAMETRO QUANTAS THREADS TEMOS LIBERADAS PARA INICIAR //SEGUNDO PARAMETRO QUANTAS THREADS PODEMOS EXECUTAR POR VEZ Pool = new Semaphore(5, 5);
//CRIANDO AS THREADS QUE PRODUZEM OS PEDIDOS for (int i = 0; i < 500; i=i+10) { Thread t = new Thread(() => produzirPedido(pedidos, i)); t.Name = "Pedido: " + i; t.Start(); }
//CRIANDO AS THREADS QUE PROCESSAM OS PEDIDOS for (int i = 0; i < 490; i=i+10) { Thread t = new Thread(() =>