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"); }
public Filozof(string name, Fork leftFork, Fork rightFork) { this.leftFork = leftFork; this.rightFork = rightFork; this.name = name; this.id = ID++; }
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ść"); }