R-Type
Distributed multiplayer game engine in C++
Loading...
Searching...
No Matches
ThreadSafeQueue< T > Class Template Reference

Thread-safe queue for inter-thread communication. More...

#include <ThreadSafeQueue.hpp>

Collaboration diagram for ThreadSafeQueue< T >:
Collaboration graph

Public Member Functions

 ThreadSafeQueue ()=default
 
 ~ThreadSafeQueue ()=default
 
 ThreadSafeQueue (const ThreadSafeQueue &)=delete
 
ThreadSafeQueueoperator= (const ThreadSafeQueue &)=delete
 
void push (T item)
 Push an item to the queue.
 
std::optional< T > tryPop ()
 Try to pop an item without blocking.
 
pop ()
 Pop an item, blocking until one is available.
 
bool empty () const
 Check if queue is empty.
 
size_t size () const
 Get queue size.
 
void clear ()
 Clear all items from queue.
 

Private Attributes

std::mutex _mutex
 
std::condition_variable _cv
 
std::queue< T > _queue
 

Detailed Description

template<typename T>
class ThreadSafeQueue< T >

Thread-safe queue for inter-thread communication.

This queue allows one thread to push items and another to pop them without race conditions. Uses mutex and condition variable for synchronization.

Template Parameters
TType of elements stored in the queue

Definition at line 25 of file ThreadSafeQueue.hpp.

Constructor & Destructor Documentation

◆ ThreadSafeQueue() [1/2]

template<typename T >
ThreadSafeQueue< T >::ThreadSafeQueue ( )
default

◆ ~ThreadSafeQueue()

template<typename T >
ThreadSafeQueue< T >::~ThreadSafeQueue ( )
default

◆ ThreadSafeQueue() [2/2]

template<typename T >
ThreadSafeQueue< T >::ThreadSafeQueue ( const ThreadSafeQueue< T > &  )
delete

Member Function Documentation

◆ clear()

template<typename T >
void ThreadSafeQueue< T >::clear ( )
inline

Clear all items from queue.

Thread-safe.

Definition at line 103 of file ThreadSafeQueue.hpp.

References ThreadSafeQueue< T >::_mutex, and ThreadSafeQueue< T >::_queue.

◆ empty()

template<typename T >
bool ThreadSafeQueue< T >::empty ( ) const
inline

Check if queue is empty.

Returns
true if empty, false otherwise

Thread-safe.

Definition at line 82 of file ThreadSafeQueue.hpp.

References ThreadSafeQueue< T >::_mutex, and ThreadSafeQueue< T >::_queue.

◆ operator=()

template<typename T >
ThreadSafeQueue & ThreadSafeQueue< T >::operator= ( const ThreadSafeQueue< T > &  )
delete

◆ pop()

template<typename T >
T ThreadSafeQueue< T >::pop ( )
inline

Pop an item, blocking until one is available.

Returns
Item from the queue

Thread-safe. Blocks until an item is available.

Definition at line 68 of file ThreadSafeQueue.hpp.

References ThreadSafeQueue< T >::_cv, ThreadSafeQueue< T >::_mutex, and ThreadSafeQueue< T >::_queue.

Referenced by server::ThreadPool::_workerLoop().

◆ push()

template<typename T >
void ThreadSafeQueue< T >::push ( item)
inline

Push an item to the queue.

Parameters
itemItem to push

Thread-safe. Notifies waiting threads.

Definition at line 40 of file ThreadSafeQueue.hpp.

References ThreadSafeQueue< T >::_cv, ThreadSafeQueue< T >::_mutex, and ThreadSafeQueue< T >::_queue.

Referenced by server::ThreadPool::enqueue(), Replicator::networkThreadLoop(), ServerNetworkManager::networkThreadLoop(), and server::ThreadPool::stop().

◆ size()

template<typename T >
size_t ThreadSafeQueue< T >::size ( ) const
inline

Get queue size.

Returns
Number of items in queue

Thread-safe.

Definition at line 93 of file ThreadSafeQueue.hpp.

References ThreadSafeQueue< T >::_mutex, and ThreadSafeQueue< T >::_queue.

◆ tryPop()

template<typename T >
std::optional< T > ThreadSafeQueue< T >::tryPop ( )
inline

Try to pop an item without blocking.

Returns
Item if available, std::nullopt otherwise

Thread-safe. Returns immediately.

Definition at line 52 of file ThreadSafeQueue.hpp.

References ThreadSafeQueue< T >::_mutex, and ThreadSafeQueue< T >::_queue.

Referenced by Replicator::processMessages(), and ServerNetworkManager::processMessages().

Member Data Documentation

◆ _cv

template<typename T >
std::condition_variable ThreadSafeQueue< T >::_cv
private

Definition at line 111 of file ThreadSafeQueue.hpp.

Referenced by ThreadSafeQueue< T >::pop(), and ThreadSafeQueue< T >::push().

◆ _mutex

◆ _queue


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