private void IniciarBotao(object sender, EventArgs e) { Contador1.Text = "0"; Contador2.Text = "0"; Contador3.Text = "0"; Contador4.Text = "0"; Contador5.Text = "0"; for (int i = 0; i < Garfo.Count(); i++) { Garfo[i].EmUso = false; Filosofo[i].Pensando = false; } ControleThread = true; F1.Abort(); F2.Abort(); F3.Abort(); F4.Abort(); F5.Abort(); { F1 = new Thread(Filosofo1); F1.Start(); } { F3 = new Thread(Filosofo3); F3.Start(); } { F5 = new Thread(Filosofo5); F5.Start(); } { F2 = new Thread(Filosofo2); F2.Start(); } { F4 = new Thread(Filosofo4); F4.Start(); } iniciar.Enabled = false; Finalizar.Enabled = true; }
private void button1_Click(object sender, EventArgs e) { count_f1.Text = "0"; count_f2.Text = "0"; count_f3.Text = "0"; count_f4.Text = "0"; count_f5.Text = "0"; for (int i = 0; i < Garfo.Count(); i++) { Garfo[i].EstaEmUso = false; Filosofos[i].EstaPensando = false; } controlaThreads = true; F1.Abort(); F2.Abort(); F3.Abort(); F4.Abort(); F5.Abort(); { F1 = new Thread(Filosofo1); F1.Start(); } { F3 = new Thread(Filosofo3); F3.Start(); } { F5 = new Thread(Filosofo5); F5.Start(); } { F2 = new Thread(Filosofo2); F2.Start(); } { F4 = new Thread(Filosofo4); F4.Start(); } button1.Enabled = false; button2.Enabled = true; }
private void Filosofo3() { int tempo = sorteio.Next(3000, 6000); int TempoComendo = tempo / Controlatempo; while (ControleThread) { if (Garfo[1].EmUso == true || Garfo[2].EmUso == true) { this.BeginInvoke((MethodInvoker) delegate { ListaTela.Items.Add(Filosofo[2].Nome + " está pensando"); Status3.Text = "Pensando"; }); Thread.Sleep(2000); } else { Semaforo.WaitOne(); { Filosofo[0].Pensando = false; Garfo[0].EmUso = true; Garfo[4].EmUso = true; this.BeginInvoke((MethodInvoker) delegate { ListaTela.Items.Add(Filosofo[2].Nome + " está comendo"); Status3.Text = "Comendo"; ContadorFilosofo3++; Contador3.Text = ContadorFilosofo3.ToString(); }); Thread.Sleep(TempoComendo); this.BeginInvoke((MethodInvoker) delegate { ListaTela.Items.Add(Filosofo[2].Nome + " está pensando"); Status3.Text = "Pensando"; }); Filosofo[2].Pensando = true; Garfo[1].EmUso = false; Garfo[2].EmUso = false; } Semaforo.Release(); if (ContadorFilosofo3 == 5) { F3.Abort(); return; } } } }