Concurrently safe member functions
Contents
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 theCopyInsertable
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 theCopyInsertable
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 pushesvalue
into the container using move semantics.Requirements: the type
T
must meet theMoveInsertable
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 theMoveInsertable
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 fromargs
into the container.Requirements: the type
T
must meet theEmplaceConstructible
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 theEmplaceConstructible
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 theMoveAssignable
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 theMoveAssignable
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
, oremplace
operations and raises theoneapi::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
.