Programação concorrente

1555 palavras 7 páginas
Linguagem C#

using System; using System.Threading; using System.Collections; using System.Collections.Generic;

public class cls_produto{ public cls_produto(){
_novoItemEvento = new AutoResetEvent(false);
_fimThread = new ManualResetEvent(false);
_eventoArray = new WaitHandle[2];
_eventoArray[0] = _novoItemEvento;
_eventoArray[1] = _fimThread;
}
private EventWaitHandle _novoItemEvento; private EventWaitHandle _fimThread; private WaitHandle[] _eventoArray;

public EventWaitHandle FimThread{ get { return _fimThread; }
}
public EventWaitHandle NovoItemEvento{ get { return _novoItemEvento; }
}
public WaitHandle[] EventArray{ get { return _eventoArray; }
}
}

public class Produtor{ public Queue _buffer; // Variáveis globais private cls_produto _produto; // Variáveis globais

public Produtor(Queue q, cls_produto e){
_buffer = q;
_produto = e;
}
public void ThreadRun(){ int count = 0; // Variável do metodo threadRun()
Random r = new Random(); // Cria o objeto r do tipo Randomico while (!_produto.FimThread.WaitOne(0, false)){ lock (((ICollection)_buffer).SyncRoot){ while (_buffer.Count < 5000){ _buffer.Enqueue(r.Next(0, 1000)); // quantidade de numeros de cada código alimentado o buffer _produto.NovoItemEvento.Set(); count++;
}
} } Console.WriteLine("Thread Produtor : produzidos " + count + " itens");
}
}

public class Consumidor{ public Consumidor(Queue q, cls_produto e){
_buffer = q;
_produto = e;
}
// Consumidor de ThreadRun public void ThreadRun(){ int count = 0; while (WaitHandle.WaitAny(_produto.EventArray) != 1){ lock (((ICollection)_buffer).SyncRoot){ int item = _buffer.Dequeue();
}
count++;
}
Console.WriteLine("Thread Consumidor : Consumido "+count+ " itens");
}
private Queue _buffer; private cls_produto _produto;
}

public class ThreadSyncSample{ private static void ShowQueueContents(Queue q){ lock (((ICollection)q).SyncRoot){ foreach (int item in q){

Relacionados

  • Programação concorrente
    1215 palavras | 5 páginas
  • programação concorrente
    1800 palavras | 8 páginas
  • Programação concorrente
    612 palavras | 3 páginas
  • Programação concorrente
    1233 palavras | 5 páginas
  • Programação concorrente
    607 palavras | 3 páginas
  • Programação concorrente
    19330 palavras | 78 páginas
  • Programação Concorrente
    2806 palavras | 12 páginas
  • Programação Concorrente
    1633 palavras | 7 páginas
  • programação concorrente
    913 palavras | 4 páginas
  • programaçao concorrente
    11817 palavras | 48 páginas