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); } }
public OtpEchoActor(OtpActorMbox mbox) : base(mbox) { }
public OtpActor(OtpActorMbox mbox) { this.mbox = mbox; }