public bool PickUpV2(Philosopher p)
        {
            bool success = Mutex.WaitOne(30);

            if (success)
            {
                philosopher = p;
                Console.WriteLine("Plilosopher " + philosopher + " picked up chopstick " + ID);
            }
            return(success);
        }
Exemple #2
0
        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);
 }