コード例 #1
0
        //static void AddByTwo(object _lock)
        //{
        //    while (true)
        //    {
        //        Monitor.Enter(_lock);
        //        number += 2;
        //        Console.WriteLine("Added by two, now number is at " + number);
        //        Thread.Sleep(1000);
        //        Monitor.Exit(_lock);
        //    }
        //}
        //static void MinusByOne(object _lock)
        //{
        //    while (true)
        //    {
        //        Monitor.Enter(_lock);
        //        number--;
        //        Console.WriteLine("Reduced by one, now number is at " + number);
        //        Thread.Sleep(1000);
        //        Monitor.Exit(_lock);
        //    }
        //}


        //static bool doStars = false;
        //static void WriteStars()
        //{
        //    while (true)
        //    {
        //        if (Monitor.TryEnter(_lock))
        //        {
        //            if (doStars)
        //            {
        //                for (int i = 0; i < 60; i++)
        //                {
        //                    Console.Write("*");
        //                }
        //                number += 60;
        //                Console.Write(" " + number + "\n");
        //                doStars = false;
        //                Monitor.Pulse(_lock);
        //                Monitor.Exit(_lock);
        //            }
        //            else
        //            {
        //                Monitor.Wait(_lock);
        //            }
        //        }
        //    }
        //}
        //static void WriteFences()
        //{
        //    while (true)
        //    {
        //        if (Monitor.TryEnter(_lock))
        //        {
        //            if (!doStars)
        //            {
        //                for (int i = 0; i < 60; i++)
        //                {
        //                    Console.Write("#");
        //                }
        //                number += 60;
        //                Console.Write(" " + number + "\n");
        //                doStars = true;
        //                Monitor.Pulse(_lock);
        //                Monitor.Exit(_lock);
        //            }
        //            else
        //            {
        //                Monitor.Wait(_lock);
        //            }
        //        }
        //    }
        //}


        public static void FillForkArray()
        {
            for (int i = 0; i < forkArray.Length; i++)
            {
                forkArray[i] = new Fork("Fork " + i);
            }
        }
コード例 #2
0
 public Philosopher(string name, Fork leftFork, Fork rightFork)
 {
     LeftFork  = leftFork;
     RightFork = rightFork;
     Name      = name;
 }