static void Main(string[] args)
        {
            int philosophersNumber = 5;

            Fork[] forks = new Fork[philosophersNumber];

            for (int i = 0; i < philosophersNumber; i++)
            {
                forks[i] = new Fork();
            }

            Filozof[] philozophers = new Filozof[philosophersNumber];
            for (int i = 0; i < philosophersNumber; i++)
            {
                philozophers[i] = new Filozof("kek", forks[i], forks[(i + 1) % philosophersNumber]);
            }

            Console.WriteLine("Uczta rozpoczęta");

            for (int i = 0; i < philosophersNumber; i++)
            {
                var idx = i;
                new Thread(() =>
                {
                    philozophers[idx].Dine();
                }).Start();
            }

            Console.WriteLine("Uczta skończona");
        }
示例#2
0
 public Filozof(string name, Fork leftFork, Fork rightFork)
 {
     this.leftFork  = leftFork;
     this.rightFork = rightFork;
     this.name      = name;
     this.id        = ID++;
 }
示例#3
0
        private void Eat(Fork leftFork, Fork rightFork)
        {
            Console.WriteLine(name + " je");

            Random rand = new Random();

            Thread.Sleep(rand.Next(5000));

            leftFork.Dirty  = true;
            rightFork.Dirty = true;
            eatenMeals++;

            Console.WriteLine(name + " skończył jeść");
        }