Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        public void canncel(OtpActorMbox mbox)
        {
            OtpActorSchedTask task = mbox.Task;

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