TQueue

Template for queues.

Choose your operating system:

Windows

macOS

Linux

References

Module

Core

Header

/Engine/Source/Runtime/Core/Public/Containers/Queue.h

Include

#include "Containers/Queue.h"

Syntax

template<typename T, EQueueMode Mode>
class TQueue

Remarks

Template for queues.

This template implements an unbounded non-intrusive queue using a lock-free linked list that stores copies of the queued items. The template can operate in two modes: Multiple-producers single-consumer (MPSC) and Single-producer single-consumer (SPSC).

The queue is thread-safe in both modes. The Dequeue() method ensures thread-safety by writing it in a way that does not depend on possible instruction reordering on the CPU. The Enqueue() method uses an atomic compare-and-swap in multiple-producers scenarios.

Constructors

Name Description

Public function

TQueue()

Default constructor.

Destructors

Name Description

Public function

~TQueue()

Destructor.

Functions

Name Description

Public function

bool

 

Dequeue

(
    FElementType& OutItem
)

Removes and returns the item from the tail of the queue.

Public function

void

 

Empty()

Empty the queue, discarding all items.

@note To be called only from consumer thread.

Public function

bool

 

Enqueue

(
    const FElementType& Item
)

Adds an item to the head of the queue.

Public function

bool

 

Enqueue

(
    FElementType&& Item
)

Adds an item to the head of the queue.

Public function Const

bool

 

IsEmpty()

Checks whether the queue is empty.

Public function

FElementType...

 

Peek()

Peek at the queue's tail item without removing it.

Public function Const

const FEleme...

 

Peek()

Public function Const

bool

 

Peek

(
    FElementType& OutItem
)

Peeks at the queue's tail item without removing it.

Public function

bool

 

Pop()

Removes the item from the tail of the queue.

Typedefs

Name

Description

FElementType