Beispiel #1
0
 public Philosopher(string left, string right, ref Fork leftFork, ref Fork rightFork)
 {
     _left      = Context.ActorSelection($"user/{left}").Anchor;
     _right     = Context.ActorSelection($"user/{right}").Anchor;
     _rightFork = rightFork;
     _leftFork  = leftFork;
     _status    = PhilosopherStatus.Thinking;
     Receive <string>(message => ProcessRequest(message));
 }
        private string GetStatus()
        {
            var temp = new PhilosopherStatus[status.Length];

            mutex.Wait();
            try
            {
                status.CopyTo(temp, 0);
            }
            finally
            {
                mutex.Release();
            }


            return(string.Join("\t", temp.Select(x => x.ToString().Substring(0, 1))));
        }
Beispiel #3
0
 private void ChangeStatus(PhilosopherStatus status)
 {
     _status = status;
     Context.ActorSelection($"/user/{nameof(MonitorActor)}").Tell(_status.ToString(), Self);
 }