# tbb::concurrent_bounded_queue< T, A > Class Template Reference
[Containers]

A high-performance thread-safe blocking concurrent bounded queue. More...

`#include <concurrent_queue.h>`

Inheritance diagram for tbb::concurrent_bounded_queue< T, A >:

List of all members.

## 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.
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.
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.
bool | try_pop (T &destination)
| Attempt to dequeue an item from head of queue.
size_type | size () const
| Return number of pushes minus number of pops.
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.
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

class | internal::concurrent_queue_iterator

## Classes

class | destroyer
| Class used to ensure exception-safety of method "pop".

## Detailed Description

### template<typename T, class A = cache_aligned_allocator<T>>
class tbb::concurrent_bounded_queue< T, A >

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.

## Member Typedef Documentation

template<typename T, class A = cache_aligned_allocator<T>>

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.

## Member Function Documentation

template<typename T, class A = cache_aligned_allocator<T>>

void tbb::concurrent_bounded_queue< T, A >::pop | ( | T & | destination | ) | `[inline]`

Dequeue item from head of queue.

Block until an item becomes available, and then dequeue it.

template<typename T, class A = cache_aligned_allocator<T>>

void tbb::concurrent_bounded_queue< T, A >::set_capacity | ( | size_type | new_capacity | ) | `[inline]`

Set the capacity.

Setting the capacity to 0 causes subsequent try_push operations to always fail, and subsequent push operations to block forever.

template<typename T, class A = cache_aligned_allocator<T>>

size_type tbb::concurrent_bounded_queue< T, A >::size | ( |  | ) | const`[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.

template<typename T, class A = cache_aligned_allocator<T>>

bool tbb::concurrent_bounded_queue< T, A >::try_pop | ( | T & | destination | ) | `[inline]`

Attempt to dequeue an item from head of queue.

Does not wait for item to become available. Returns true if successful; false otherwise.

template<typename T, class A = cache_aligned_allocator<T>>

bool tbb::concurrent_bounded_queue< T, A >::try_push | ( | const T & | source | ) | `[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.

The documentation for this class was generated from the following file:

- concurrent_queue.h

Copyright © 2005-2013 Intel Corporation. All Rights Reserved.

Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are registered trademarks or trademarks of Intel Corporation or its subsidiaries in the United States and other countries.

* Other names and brands may be claimed as the property of others.