public void wait(long id, mutex_base mutex, functional.func ntf) { _strand.distribute(delegate() { _waitQueue.AddLast(delegate() { mutex.Lock(id, ntf); }); }); }
public override void Lock(long id, functional.func ntf) { _strand.distribute(delegate() { if (0 == _lockID || id == _lockID) { _lockID = id; _recCount++; ntf(); } else { _waitQueue.AddLast(new wait_node((chan_async_state) => ntf(), id)); } }); }