public void ComerEPensar(Garfo g1, Garfo g2) { while (true) { Pensar(); Comer(g1, g2); } }
public Restaurante(int nFilosofos) { vetorFilosofos = new Filosofo[nFilosofos]; vetorGarfos = new Garfo[nFilosofos]; vetorThreads = new Thread[nFilosofos]; for (int a = 0; a < vetorFilosofos.Length; a++) { vetorFilosofos[a] = new Filosofo(a); vetorGarfos[a] = new Garfo(a); } OrganizarGarfos(); }
private void Comer(Garfo g1, Garfo g2) { Console.WriteLine("\nFilosofo {0} aguarda os garfos ficarem disponíveis", ID); g1.mutex.WaitOne(); g2.mutex.WaitOne(); Random r = new Random(); int tempoComendo = r.Next(0, 10000); Console.WriteLine("\nFilosofo {0} está comendo com os garfos {1} e {2}", ID, g1.NumGarfo, g2.NumGarfo); Thread.Sleep(tempoComendo); Console.WriteLine("\nFilosofo {0} terminou de comer e liberou os garfos {1} e {2}", ID, g1.NumGarfo, g2.NumGarfo); g1.mutex.ReleaseMutex(); g2.mutex.ReleaseMutex(); }