Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        /// <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();
        }