Lines Matching defs:pop_global
204 // and pop_global operations concurrently, starting from a state in which
206 // and the pop_global in incrementing _top (in which case the pop_global
210 // threads attempting to perform the pop_global will all perform the same
227 // The "careful" version admits the possibility of pop_local/pop_global
276 // Slow paths for push, pop_local. (pop_global has no fast path.)
298 bool pop_global(E& t);
353 // get the last task in the queue. It will compete with pop_global()
356 // gets the last task or in pop_global() if the queue wraps (top == 0
357 // and pop_global() succeeds, see pop_global()).
361 // thread will claim it, or a competing "pop_global". In either case,
365 // "top == 0". A pop_global could read the queue element in that case,
367 // the incrementing of "tag", the pop_global's CAS could succeed,
370 // Perhaps a competing pop_global has already incremented "top", in which
373 // No competing pop_global has yet incremented "top"; we'll try to
383 // We lose; a completing pop_global gets the element. But the queue is empty
392 bool GenericTaskQueue<E, F, N>::pop_global(E& t) {
554 return best_sz > 0 && _queues[best_k]->pop_global(t);
558 return _queues[k]->pop_global(t);
570 return _queues[2]->pop_global(t);
574 return _queues[k]->pop_global(t);
591 if (sz2 > sz1) return _queues[k2]->pop_global(t);
592 else return _queues[k1]->pop_global(t);
596 return _queues[k]->pop_global(t);
714 // a "pop_global" operation, and we're done.