public void Test()
        {
            const int philoCount = 5;
            var       chops      = new Chopstick[philoCount];

            for (int i = 0; i < philoCount; i++)
            {
                chops[i] = new Chopstick();
            }

            var tasks = new Task[philoCount];

            tasks[0] = new Task(() => new Philosopher(chops[0], chops[philoCount - 1], "philo1").Eat());

            for (int i = 1; i < philoCount; ++i)
            {
                int ix = i;
                tasks[ix] = new Task(() => new Philosopher(chops[ix - 1], chops[ix], "philo" + (ix + 1)).Eat());
            }
            Parallel.ForEach(tasks, t => t.Start());
            Task.WaitAll(tasks);
        }
 public Philosopher(Chopstick left, Chopstick right, string name)
 {
     _left  = left;
     _right = right;
     _name  = name;
 }