1 static class Inicio
2 {
3 //Tiempo utilizado para que los consumidores consuman los elementos restantes
4 const int Pausa = 300;
5
6
7 static void Main()
8 {
9 Comienzo();
10 }
11
12 public static void Comienzo()
13 {
14
15 Repositorio repositorio = new Repositorio();
16
17 Productor productor = new Productor(repositorio);
18
19 ThreadStart threadstartproductor = new ThreadStart(productor.GenerarValores);
20 Thread threadproductor = new Thread(threadstartproductor);
21
22 Consumidor consumidor_1 = new Consumidor(repositorio, "Consumidor_1");
23 Consumidor consumidor_2 = new Consumidor(repositorio, "Consumidor_2");
24
25 ThreadStart threadstartconsumidor_1 = new ThreadStart(consumidor_1.ConsumirValor);
26 Thread threadconsumidor_1 = new Thread(threadstartconsumidor_1);
27
28 ThreadStart threadstartconsumidor_2 = new ThreadStart(consumidor_2.ConsumirValor);
29 Thread threadconsumidor_2 = new Thread(threadstartconsumidor_2);
30
31 threadconsumidor_1.Start();
32 threadconsumidor_2.Start();
33
34 threadproductor.Start();
35
36 Thread.Sleep(Pausa);
37
38 productor.DetenerProceso();
39 Console.WriteLine("<br>El productor recibe señal de terminar el proceso");
40
41 consumidor_1.DetenerProceso();
42 Console.WriteLine("<br>El consumidor_1 recibe señal de terminar el procesos");
43
44 consumidor_2.DetenerProceso();
45 Console.WriteLine("<br>El consumidor_2 recibe señal de terminar el procesos");
46
47 Console.WriteLine(String.Format("<br>Elementos pendientes en repositorio: {0}", repositorio.listaescritora.Count));
48
49 Console.WriteLine(String.Format("<br>Elementos consumidos Consumidor_1: {0} - Consumidor_2: {1}", consumidor_1.Iteracion, consumidor_2.Iteracion));
50 Console.WriteLine(String.Format("<br>Total elementos producidos: {0}- Total elementos consumidos: {1}", productor.Iteracion, repositorio.listarecolectora.Count));
51
52 }
53 }