Double-ended queue of bounded size, allowing lock-free atomic access. More...
#include <queue.h>
Public Member Functions | |
_RestrictedBoundedConcurrentQueue (_SequenceIndex __max_size) | |
Constructor. More... | |
~_RestrictedBoundedConcurrentQueue () | |
Destructor. More... | |
bool | pop_back (_Tp &__t) |
Pops one element from the queue at the front end. More... | |
bool | pop_front (_Tp &__t) |
Pops one element from the queue at the front end. More... | |
void | push_front (const _Tp &__t) |
Pushes one element into the queue at the front end. More... | |
Private Attributes | |
_Tp * | _M_base |
Array of elements, seen as cyclic buffer. More... | |
volatile _CASable | _M_borders |
Cyclic __begin and __end pointers contained in one atomically changeable value. More... | |
_SequenceIndex | _M_max_size |
Maximal number of elements contained at the same time. More... | |
Double-ended queue of bounded size, allowing lock-free atomic access.
push_front() and pop_front() must not be called concurrently to each other, while pop_back() can be called concurrently at all times. empty()
, size()
, and top()
are intentionally not provided. Calling them would not make sense in a concurrent setting.
_Tp | Contained element type. |
|
inline |
Constructor.
Not to be called concurrent, of course.
__max_size | Maximal number of elements to be contained. |
|
inline |
Destructor.
Not to be called concurrent, of course.
|
inline |
Pops one element from the queue at the front end.
Must not be called concurrently with pop_front().
|
inline |
Pops one element from the queue at the front end.
Must not be called concurrently with pop_front().
Referenced by __gnu_parallel::__qsb_local_sort_with_helping().
|
inline |
Pushes one element into the queue at the front end.
Must not be called concurrently with pop_front().
Referenced by __gnu_parallel::__qsb_local_sort_with_helping().
|
private |
Array of elements, seen as cyclic buffer.
Referenced by __gnu_parallel::_RestrictedBoundedConcurrentQueue< _Piece >::~_RestrictedBoundedConcurrentQueue().
|
private |
Cyclic __begin and __end pointers contained in one atomically changeable value.
Referenced by __gnu_parallel::_RestrictedBoundedConcurrentQueue< _Piece >::push_front().
|
private |
Maximal number of elements contained at the same time.
Referenced by __gnu_parallel::_RestrictedBoundedConcurrentQueue< _Piece >::pop_back(), and __gnu_parallel::_RestrictedBoundedConcurrentQueue< _Piece >::push_front().