public bool Poll(out V item)
 {
     if (queue.Poll(out item))
     {
         parent.RequestInner(1);
         return(true);
     }
     return(false);
 }
예제 #2
0
 public bool Poll(out R item)
 {
     if (queue.Poll(out item))
     {
         var lim = limit;
         if (++consumed == lim)
         {
             consumed = 0;
             upstream.Request(lim);
         }
         return(true);
     }
     return(false);
 }
예제 #3
0
            public bool Poll(out T item)
            {
                bool b = queue.Poll(out item);

                if (b && sourceMode != FusionSupport.SYNC)
                {
                    int c = consumed + 1;
                    if (c == limit)
                    {
                        consumed = 0;
                        upstream.Request(limit);
                    }
                    else
                    {
                        consumed = c;
                    }
                }
                return(b);
            }
 public bool Poll(out T item)
 {
     return(queue.Poll(out item));
 }