Concurrently safe member functions

Concurrently safe member functions#

All member functions in this section can be performed concurrently with each other.

Pushing elements#

void push( const value_type& value );

Waits until the number of items in the queue is less than the capacity and pushes a copy of value into the container.

Requirements: the type T must meet the CopyInsertable requirements from the [container.requirements] ISO C++ Standard section.


bool try_push( const value_type& value );

If the number of items in the queue is less than the capacity, pushes a copy of value into the container.

Requirements: the type T must meet the CopyInsertable requirements from the [container.requirements] ISO C++ Standard section.

Returns: true if the item was pushed; false, otherwise.


void push( value_type&& value );

Waits until the number of items in the queue is less than capacity() and pushes value into the container using move semantics.

Requirements: the type T must meet the MoveInsertable requirements from the [container.requirements] ISO C++ Standard section.

value is left in a valid, but unspecified state.


bool try_push( value_type&& value );

If the number of items in the queue is less than the capacity, pushes value into the container using move semantics.

Requirements: the type T must meet the MoveInsertable requirements from the [container.requirements] ISO C++ Standard section.

value is left in a valid, but unspecified state.

Returns: true if the item was pushed; false, otherwise.


template <typename... Args>
void emplace( Args&&... args );

Waits until the number of items in the queue is less than capacity() and pushes a new element constructed from args into the container.

Requirements: the type T must meet the EmplaceConstructible requirements from the [container.requirements] ISO C++ Standard section.


template <typename... Args>
bool try_emplace( Args&&... args );

If the number of items in the queue is less than the capacity, pushes a new element constructed from args into the container.

Requirements: the type T must meet the EmplaceConstructible requirements from the [container.requirements] ISO C++ Standard section.

Returns: true if the item was pushed; false, otherwise.

Popping elements#

void pop( value_type& value );

Waits until the item becomes available, copies it from the container, and assigns it to the value. The popped element is destroyed.

Requirements: the type T must meet the MoveAssignable requirements from the [moveassignable] ISO C++ Standard section.


bool try_pop( value_type& value );

If the container is empty, does nothing.

Otherwise, copies the last element from the container and assigns it to the value. The popped element is destroyed.

Requirements: the type T must meet the MoveAssignable requirements from the [moveassignable] ISO C++ Standard section.

Returns: true if the element was popped; false, otherwise.

abort#

void abort();

Wakes up any threads that are waiting on the queue via push, pop, or emplace operations and raises the oneapi::tbb::user_abort exception on those threads.

Capacity of the queue#

size_type capacity() const;

Returns: the maximum number of items that the queue can hold.


void set_capacity( size_type new_capacity ) const;

Sets the maximum number of items that the queue can hold to new_capacity.

get_allocator#

allocator_type get_allocator() const;

Returns: a copy of the allocator, associated with *this.