public Simulacion(List <List <string> > hilillos, int quantumIngresado, bool esDespacio) { InitializeComponent(); memoria = new Memoria(); colaContextos = new Queue <Contexto>(); contextosTerminados = new List <Contexto>(); // var sync = new Barrier(participantCount: CANTIDAD_NUCLEOS); //Barrera para sincronizar sync = new Barrier(CANTIDAD_NUCLEOS, (foo) => { reloj++; //lblReloj.Invoke(new Action(() => lblReloj.Text = reloj.ToString())); //lblReloj.Refresh(); Console.WriteLine("Reloj: " + reloj); }); //Barrera para sincronizar this.hilillos = hilillos; quantum = quantumIngresado; ejecucionLenta = esDespacio; // ejecución lenta = true; ejecución rápida = false. reloj = 0; CargarInstrucciones(); busDatos = new BusDatos(memoria); busInstrucciones = new BusInstrucciones(memoria); n0 = new Nucleo(sync, ref busDatos, ref busInstrucciones, 0, quantumIngresado, ref colaContextos, ref contextosTerminados); n1 = new Nucleo(sync, ref busDatos, ref busInstrucciones, 1, quantumIngresado, ref colaContextos, ref contextosTerminados); }
/* * Constructor de la clase */ public Nucleo(Barrier barrera, ref BusDatos bd, ref BusInstrucciones bi, int id, int quantumInicial, ref Queue <Contexto> colaContextos, ref List <Contexto> contextosTerminados) { Sync = barrera; busDatos = bd; busDatos.SetNucleo(id, this); busInstrucciones = bi; busInstrucciones.SetNucleo(id, this); identificador = id; quantum = quantumInicial; this.quantumInicial = quantumInicial; this.colaContextos = colaContextos; this.contextosTerminados = contextosTerminados; contextoEnEjecucion = null; nucleos = new List <Nucleo>(); cacheDatos = new CacheDatos(); cacheInstrucciones = new CacheInstrucciones(); }