public void notify(OtpActorMbox mbox)
        {
            OtpActorSchedTask task = mbox.Task;

            Monitor.Enter(runnable);
            try
            {
                Monitor.Enter(task);
                try
                {
                    if (mbox.Task.Active)
                    {
                        runnable.Enqueue(mbox.Task);
                        if (runnable.Count == 1)
                        {
                            Monitor.Pulse(runnable);
                        }
                    }
                }
                finally
                {
                    Monitor.Exit(task);
                }
            }
            finally
            {
                Monitor.Exit(runnable);
            }
        }
        public void canncel(OtpActorMbox mbox)
        {
            OtpActorSchedTask task = mbox.Task;

            Monitor.Enter(runnable);
            try
            {
                lock (task)
                {
                    task.Active = false;
                }
            }
            finally
            {
                Monitor.Exit(runnable);
            }
        }
Example #3
0
 public OtpEchoActor(OtpActorMbox mbox)
     : base(mbox)
 {
 }
Example #4
0
 public OtpActor(OtpActorMbox mbox)
 {
     this.mbox = mbox;
 }