Exemplo n.º 1
0
        private bool PickUp()
        {
            if (LeftFork.WaitOne(0))
            {
                if (RightFork.WaitOne(0))
                {
                    return(true);
                }
                else
                {
                    PutDownLeft();
                }
            }

            return(false);
        }
Exemplo n.º 2
0
        public async Task <bool> Eat()
        {
            //Console.WriteLine(Name + " Requested");
            await Waiter.Request(this);

            LeftFork.Take();
            //Console.WriteLine(Name + " picked up left");
            RightFork.Take();
            //EventManager.Broadcast("Eating");
            //Console.WriteLine(Name + " picked up right");
            Console.WriteLine(Name + " began eating");
            Thread.Sleep(NextEatTime);
            Console.WriteLine(Name + " finished eating");
            LeftFork.Release();
            //Console.WriteLine(Name + " put down left");
            RightFork.Release();
            //Console.WriteLine(Name + " put down right");
            EventManager.Broadcast("Finished", Name);
            return(true);
        }
Exemplo n.º 3
0
 private void PutDownRight()
 {
     RightFork.Release();
 }