TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

ATPS na tecnologia

Seminário: ATPS na tecnologia. Pesquise 862.000+ trabalhos acadêmicos

Por:   •  19/11/2013  •  Seminário  •  925 Palavras (4 Páginas)  •  251 Visualizações

Página 1 de 4

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();

}

/// <summary>

/// Este método chama as threads

/// </summary>

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(() => processarPedido(pedidos, i));

t.Name = "Pedido: " + i;

t.Start();

}

}

private static void processarPedido(int[] pedido, int id)

{

try

{

if (flag) Pool.WaitOne();

//Console.WriteLine(Thread.CurrentThread.Name + " processando.");

//espera 3 segundos antes de terminar

pedido[id] = 2;

Thread.Sleep(1000);

Console.WriteLine(Thread.CurrentThread.Name + "

...

Baixar como (para membros premium)  txt (3 Kb)  
Continuar por mais 3 páginas »
Disponível apenas no TrabalhosGratuitos.com