コード例 #1
0
 public void wait(long id, mutex_base mutex, functional.func ntf)
 {
     _strand.distribute(delegate()
     {
         _waitQueue.AddLast(delegate()
         {
             mutex.Lock(id, ntf);
         });
     });
 }
コード例 #2
0
 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));
         }
     });
 }