Ejemplo n.º 1
0
 public void timed_wait(long id, int ms, mutex_base mutex, functional.func <chan_async_state> ntf)
 {
     _strand.distribute(delegate()
     {
         if (ms > 0)
         {
             async_timer timer = new async_timer(_strand);
             LinkedListNode <functional.func> node = _waitQueue.AddLast(delegate()
             {
                 timer.cancel();
                 mutex.Lock(id, delegate()
                 {
                     ntf(chan_async_state.async_ok);
                 });
             });
             timer.timeout(ms, delegate()
             {
                 _waitQueue.Remove(node);
                 ntf(chan_async_state.async_overtime);
             });
         }
         else
         {
             ntf(chan_async_state.async_overtime);
         }
     });
 }
Ejemplo n.º 2
0
 public void wait(long id, mutex_base mutex, functional.func ntf)
 {
     _strand.distribute(delegate()
     {
         _waitQueue.AddLast(delegate()
         {
             mutex.Lock(id, ntf);
         });
     });
 }