private void Main_Load(object sender, EventArgs e) { //Una sóla instancia del recurso compartido // que se comparte entre los procesos Tenedores tenedores = new Tenedores(); //Se crean las instancias de los filosofos Filosofo filosofo0 = new Filosofo(0, tenedores, evento_CambioEstado); Filosofo filosofo1 = new Filosofo(1, tenedores, evento_CambioEstado); Filosofo filosofo2 = new Filosofo(2, tenedores, evento_CambioEstado); Filosofo filosofo3 = new Filosofo(3, tenedores, evento_CambioEstado); Filosofo filosofo4 = new Filosofo(4, tenedores, evento_CambioEstado); }
/// <summary> /// Constructor de la clase filósofo /// </summary> /// <param name="id">Identificador del proceso</param> /// <param name="tenedores">Recurso compartido</param> /// <param name="manejadorEstado">Manejador de evento para notificar un cambio de estado: Pensando, Esperando, Comiendo</param> public Filosofo(int id, Tenedores tenedores, EventHandler manejadorEstado) { int numFilosofos = int.Parse(ConfigurationManager.AppSettings["NumFilosofos"]); this.tenedores = tenedores; this.id = id; ManejadorEstado = manejadorEstado; //Asigna los índices de los tenedores que le corresponden al filósofo izquierda = id == 0 ? numFilosofos - 1 : id - 1; derecha = id; //Inicia la ejecucion del proceso en un hilo independiente Thread proceso = new Thread(new ThreadStart(Iniciar)); proceso.Start(); }