public void RightHandedEaterGetsFood(Philosopher eater, TakeBitEventArgs e) { eater.RightChopstick.WaitOne(); eater.LeftChopstick.WaitOne(); Eat(eater); eater.RightChopstick.Set(); eater.LeftChopstick.Set(); }
private void Eat(Philosopher eater) { lock (Locker) { //What if no food is delivered? if (Dish.TakeBite()) { eater.HungerLevel--; Console.WriteLine($"Eater # {eater.Id} takes a bite. Hunger level: {eater.HungerLevel} --- Remainging food: {Dish.Bites}"); eater.IsEating = false; } } Monitor.Pulse(Locker); }
public void RightHandedEaterGetsFood(Philosopher eater, TakeBitEventArgs e) { eater.RightChopstick.WaitOne(); eater.LeftChopstick.WaitOne(); Eat(eater); eater.RightChopstick.Set(); eater.LeftChopstick.Set(); }
protected virtual void OnTakeBiteEvent(Philosopher eater, TakeBitEventArgs e) { TakeBiteEvent?.Invoke(eater, e); }
private void Eat(Philosopher eater) { lock (Locker) { //What if no food is delivered? if (Dish.TakeBite()) { eater.HungerLevel--; Console.WriteLine($"Eater # {eater.Id} takes a bite. Hunger level: {eater.HungerLevel} --- Remainging food: {Dish.Bites}"); eater.IsEating = false; } } Monitor.Pulse(Locker); }
protected virtual void OnTakeBiteEvent(Philosopher eater, TakeBitEventArgs e) { TakeBiteEvent?.Invoke(eater, e); }