A high-performance thread-safe blocking concurrent bounded queue. More...
#include <concurrent_queue.h>
Public Types | |
typedef T | value_type |
Element type in the queue. | |
typedef A | allocator_type |
Allocator type. | |
typedef T & | reference |
Reference type. | |
typedef const T & | const_reference |
Const reference type. | |
typedef std::ptrdiff_t | size_type |
Integral type for representing size of the queue. More... | |
typedef std::ptrdiff_t | difference_type |
Difference type for iterator. | |
typedef internal::concurrent_queue_iterator < concurrent_bounded_queue, T > | iterator |
typedef internal::concurrent_queue_iterator < concurrent_bounded_queue, const T > | const_iterator |
Public Member Functions | |
concurrent_bounded_queue (const allocator_type &a=allocator_type()) | |
Construct empty queue. | |
concurrent_bounded_queue (const concurrent_bounded_queue &src, const allocator_type &a=allocator_type()) | |
Copy constructor. | |
template<typename InputIterator > | |
concurrent_bounded_queue (InputIterator begin, InputIterator end, const allocator_type &a=allocator_type()) | |
[begin,end) constructor | |
~concurrent_bounded_queue () | |
Destroy queue. | |
void | push (const T &source) |
Enqueue an item at tail of queue. | |
void | pop (T &destination) |
Dequeue item from head of queue. More... | |
void | abort () |
Abort all pending queue operations. | |
bool | try_push (const T &source) |
Enqueue an item at tail of queue if queue is not already full. More... | |
bool | try_pop (T &destination) |
Attempt to dequeue an item from head of queue. More... | |
size_type | size () const |
Return number of pushes minus number of pops. More... | |
bool | empty () const |
Equivalent to size()<=0. | |
size_type | capacity () const |
Maximum number of allowed elements. | |
void | set_capacity (size_type new_capacity) |
Set the capacity. More... | |
allocator_type | get_allocator () const |
return allocator object | |
void | clear () |
clear the queue. not thread-safe. | |
iterator | unsafe_begin () |
iterator | unsafe_end () |
const_iterator | unsafe_begin () const |
const_iterator | unsafe_end () const |
Friends | |
template<typename Container , typename Value > | |
class | internal::concurrent_queue_iterator |
A high-performance thread-safe blocking concurrent bounded queue.
This is the pre-PPL TBB concurrent queue which supports boundedness and blocking semantics. Note that method names agree with the PPL-style concurrent queue. Multiple threads may each push and pop concurrently. Assignment construction is not allowed.
typedef std::ptrdiff_t tbb::concurrent_bounded_queue< T, A >::size_type |
Integral type for representing size of the queue.
Note that the size_type is a signed integral type. This is because the size can be negative if there are pending pops without corresponding pushes.
|
inline |
Dequeue item from head of queue.
Block until an item becomes available, and then dequeue it.
|
inline |
Set the capacity.
Setting the capacity to 0 causes subsequent try_push operations to always fail, and subsequent push operations to block forever.
|
inline |
Return number of pushes minus number of pops.
Note that the result can be negative if there are pops waiting for the corresponding pushes. The result can also exceed capacity() if there are push operations in flight.
|
inline |
Attempt to dequeue an item from head of queue.
Does not wait for item to become available. Returns true if successful; false otherwise.
Referenced by tbb::deprecated::concurrent_queue< T, A >::pop_if_present().
|
inline |
Enqueue an item at tail of queue if queue is not already full.
Does not wait for queue to become not full. Returns true if item is pushed; false if queue was already full.
Referenced by tbb::deprecated::concurrent_queue< T, A >::push_if_not_full().