Libosmium  2.9.0
Fast and flexible C++ library for working with OpenStreetMap data
Public Member Functions | Private Attributes | List of all members
osmium::thread::Queue< T > Class Template Reference

#include <queue.hpp>

Public Member Functions

 Queue (size_t max_size=0, const std::string &name="")
 
 ~Queue ()
 
void push (T value)
 
void wait_and_pop (T &value)
 
bool try_pop (T &value)
 
bool empty () const
 
size_t size () const
 

Private Attributes

const size_t m_max_size
 
const std::string m_name
 Name of this queue (for debugging only). More...
 
std::mutex m_mutex
 
std::queue< T > m_queue
 
std::condition_variable m_data_available
 Used to signal readers when data is available in the queue. More...
 

Detailed Description

template<typename T>
class osmium::thread::Queue< T >

A thread-safe queue.

Constructor & Destructor Documentation

§ Queue()

template<typename T>
osmium::thread::Queue< T >::Queue ( size_t  max_size = 0,
const std::string &  name = "" 
)
inlineexplicit

Construct a multithreaded queue.

Parameters
max_sizeMaximum number of elements in the queue. Set to 0 for an unlimited size.
nameOptional name for this queue. (Used for debugging.)

§ ~Queue()

template<typename T>
osmium::thread::Queue< T >::~Queue ( )
inline

Member Function Documentation

§ empty()

template<typename T>
bool osmium::thread::Queue< T >::empty ( ) const
inline

§ push()

template<typename T>
void osmium::thread::Queue< T >::push ( value)
inline

Push an element onto the queue. If the queue has a max size, this call will block if the queue is full.

§ size()

template<typename T>
size_t osmium::thread::Queue< T >::size ( ) const
inline

§ try_pop()

template<typename T>
bool osmium::thread::Queue< T >::try_pop ( T &  value)
inline

§ wait_and_pop()

template<typename T>
void osmium::thread::Queue< T >::wait_and_pop ( T &  value)
inline

Member Data Documentation

§ m_data_available

template<typename T>
std::condition_variable osmium::thread::Queue< T >::m_data_available
private

Used to signal readers when data is available in the queue.

§ m_max_size

template<typename T>
const size_t osmium::thread::Queue< T >::m_max_size
private

Maximum size of this queue. If the queue is full pushing to the queue will block.

§ m_mutex

template<typename T>
std::mutex osmium::thread::Queue< T >::m_mutex
mutableprivate

§ m_name

template<typename T>
const std::string osmium::thread::Queue< T >::m_name
private

Name of this queue (for debugging only).

§ m_queue

template<typename T>
std::queue<T> osmium::thread::Queue< T >::m_queue
private

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