public bool PickUpV2(Philosopher p) { bool success = Mutex.WaitOne(30); if (success) { philosopher = p; Console.WriteLine("Plilosopher " + philosopher + " picked up chopstick " + ID); } return(success); }
public static void Main() { int n = 5; Chopstick[] cSticks = new Chopstick[n]; for (int i = 0; i < n; i++) { cSticks[i] = new Chopstick(); } Philosopher[] philosophers = new Philosopher[n]; for (int i = 0; i < n; i++) { philosophers[i] = new Philosopher(cSticks[(n + i - 1) % n], cSticks[i]); //Poprawka wprowadzona aby program nie ulegał zakleszczeniu if (i == 0) { philosophers[i].LeftHanded = true; } philosophers[i].Start(); } }
public void PutDown() { Console.WriteLine("Plilosopher " + philosopher + " put down chopstick " + ID); philosopher = null; Mutex.ReleaseMutex(); }
public void PickUp(Philosopher p) { Mutex.WaitOne(); philosopher = p; Console.WriteLine("Plilosopher " + philosopher + " picked up chopstick " + ID); }