This class provides a thread‐safe unbounded queue of values that assumes a single consumer thread.

Synopsis

Declared in <bdlcc_singleconsumerqueueimpl.h>

template<
    class TYPE,
    class ATOMIC_OP,
    class MUTEX,
    class CONDITION>
class SingleConsumerQueueImpl;

Description

The types ATOMIC_OP, MUTEX, and CONDITION are exposed for testing. Typical usage is with bsls::AtomicOperations for ATOMIC_OP, bslmt::Mutex for MUTEX, and bslmt::Condition for CONDITION.

Type Aliases

Name

Description

value_type

The type for elements stored in this queue.

Enums

Name

Description

Unnamed enum

Status codes returned by queue operations.

Member Functions

Name

Description

SingleConsumerQueueImpl [constructor]

Constructors

~SingleConsumerQueueImpl [destructor]

Destroy this container. The behavior is undefined unless all access or modification of the container has completed prior to this call.

allocator

Return the allocator used by this object to supply memory.

disablePopFront

Disable dequeueing from this queue. All subsequent invocations of popFront or tryPopFront will fail immediately. All blocked invocations of popFront and waitUntilEmpty will fail immediately. If the queue is already dequeue disabled, this method has no effect.

disablePushBack

Disable enqueueing into this queue. All subsequent invocations of pushBack or tryPushBack will fail immediately. All blocked invocations of pushBack will fail immediately. If the queue is already enqueue disabled, this method has no effect.

enablePopFront

Enable dequeueing. If the queue is not dequeue disabled, this call has no effect.

enablePushBack

Enable queuing. If the queue is not enqueue disabled, this call has no effect.

isEmpty

Return true if this queue is empty (has no elements), or false otherwise.

isFull

Return true if this queue is full (has no available capacity), or false otherwise. Note that for unbounded queues, this method always returns false.

isPopFrontDisabled

Return true if this queue is dequeue disabled, and false otherwise. Note that the queue is created in the "dequeue enabled" state.

isPushBackDisabled

Return true if this queue is enqueue disabled, and false otherwise. Note that the queue is created in the "enqueue enabled" state.

numElements

Returns the number of elements currently in this queue.

popFront

Remove the element from the front of this queue and load that element into the specified value. If the queue is empty, block until it is not empty. Return 0 on success, and a non‐zero value otherwise. Specifically, return e_DISABLED if isPopFrontDisabled(). On failure, value is not changed. Threads blocked due to the queue being empty will return e_DISABLED if disablePopFront is invoked. The behavior is undefined unless the invoker of this method is the single consumer.

pushBack

pushBack overloads

removeAll

Remove all items currently in this queue. Note that this operation is not atomic; if other threads are concurrently pushing items into the queue the result of numElements() after this function returns is not guaranteed to be 0. The behavior is undefined unless the invoker of this method is the single consumer.

tryPopFront

Attempt to remove the element from the front of this queue without blocking, and, if successful, load the specified value with the removed element. Return 0 on success, and a non‐zero value otherwise. Specifically, return e_DISABLED if isPopFrontDisabled(), and e_EMPTY if !isPopFrontDisabled() and the queue was empty. On failure, value is not changed. The behavior is undefined unless the invoker of this method is the single consumer.

tryPushBack

tryPushBack overloads

waitUntilEmpty

Block until all the elements in this queue are removed. Return 0 on success, and a non‐zero value otherwise. Specifically, return e_DISABLED if !isEmpty() && isPopFrontDisabled(). A blocked thread waiting for the queue to empty will return e_DISABLED if disablePopFront is invoked.

operator BloombergLP::bslmf::NestedTraitDeclaration<SingleConsumerQueueImpl, UsesBslmaAllocator>

Declare that this type uses a bslma allocator.

Friends

Name

Description

BloombergLP::bdlcc::SingleConsumerQueueImpl_AllocateLockGuard

This class implements a guard that automatically invokes releaseAllocateLock on the managed queue upon destruction.

BloombergLP::bdlcc::SingleConsumerQueueImpl_PopCompleteGuard

This class implements a guard that automatically invokes popComplete on the managed queue upon destruction.

BloombergLP::bdlcc::SingleConsumerQueueImpl_MarkReclaimProctor

This class implements a proctor that, unless its release method has previously been invoked, automatically invokes markReclaim on a NODE upon destruction.

Created with MrDocs