Exemplo n.º 1
0
 private List <Action> TryDequeue()
 {
     if (_actions.Count > 0)
     {
         Lists.Swap(ref _actions, ref _toPass);
         _actions.Clear();
         return(_toPass);
     }
     return(null);
 }
Exemplo n.º 2
0
 public List <Action> Drain()
 {
     lock (_lock)
     {
         if (ReadyToDequeue())
         {
             Lists.Swap(ref _actions, ref _toPass);
             _actions.Clear();
             return(_toPass);
         }
         return(null);
     }
 }
Exemplo n.º 3
0
 public List <Action> Drain()
 {
     lock (_lock)
     {
         if (ReadyToDequeue())
         {
             Lists.Swap(ref _actions, ref _toPass);
             _actions.Clear();
             Monitor.PulseAll(_lock);
             return(_toPass);
         }
         return(Queue.Empty);
     }
 }
Exemplo n.º 4
0
 private List <Action> DequeueAll()
 {
     Wait();
     lock (_syncRoot)
     {
         if (_actions.Count == 0)
         {
             return(Queue.Empty);
         }
         Lists.Swap(ref _actions, ref _toPass);
         _actions.Clear();
         return(_toPass);
     }
 }
Exemplo n.º 5
0
        private List <Action> DequeueAll()
        {
            bool lockTaken = false;

            try
            {
                _lock.Enter(ref lockTaken);
                if (_actions.Count == 0)
                {
                    return(Queue.Empty);
                }
                Lists.Swap(ref _actions, ref _toPass);
                _actions.Clear();
                return(_toPass);
            }
            finally
            {
                if (lockTaken)
                {
                    _lock.Exit();
                }
            }
        }