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; }