Libosmium: osmium::thread::Queue< T > Class Template Reference

Libosmium Fast and flexible C++ library for working with OpenStreetMap data

Loading...
Searching...
No Matches
Public Member Functions | Private Attributes | List of all members
osmium::thread::Queue< T > Class Template Reference

`#include <queue.hpp>`

## Public Member Functions
| Queue (std::size_t max_size=0, std::string name="")
| Queue (const Queue &)=delete
Queue & | operator= (const Queue &)=delete
| Queue (Queue &&)=delete
Queue & | operator= (Queue &&)=delete
| ~Queue ()=default
void | push (T value)
void | wait_and_pop (T &value)
bool | try_pop (T &value)
bool | empty () const
std::size_t | size () const
bool | in_use () const noexcept
void | shutdown ()

## Private Attributes
const std::size_t | m_max_size
const std::string | m_name
| Name of this queue (for debugging only).
std::mutex | m_mutex
std::queue< T > | m_queue
std::condition_variable | m_data_available
| Used to signal consumers when data is available in the queue.
std::condition_variable | m_space_available
| Used to signal producers when queue is not full.
std::atomic< bool > | m_in_use {true}

## Detailed Description

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

A thread-safe queue.

## Constructor & Destructor Documentation

## ◆ Queue() [1/3]

template<typename T>

osmium::thread::Queue< T >::Queue | ( | std::size_t | max_size = 0,
|  | std::string | name = "" )
| inlineexplicit

Construct a multithreaded queue.

Parameters

  max_size | Maximum number of elements in the queue. Set to 0 for an unlimited size.
  name | Optional name for this queue. (Used for debugging.)

## ◆ Queue() [2/3]

template<typename T>

osmium::thread::Queue< T >::Queue | ( | const Queue< T > & |  | ) |
| delete

## ◆ Queue() [3/3]

template<typename T>

osmium::thread::Queue< T >::Queue | ( | Queue< T > && |  | ) |
| delete

## ◆ ~Queue()

template<typename T>

osmium::thread::Queue< T >::~Queue | ( |  | ) |
| default

## Member Function Documentation

## ◆ empty()

template<typename T>

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

## ◆ in_use()

template<typename T>

bool osmium::thread::Queue< T >::in_use | ( |  | ) | const
| inlinenoexcept

## ◆ operator=() [1/2]

template<typename T>

Queue & osmium::thread::Queue< T >::operator= | ( | const Queue< T > & |  | ) |
| delete

## ◆ operator=() [2/2]

template<typename T>

Queue & osmium::thread::Queue< T >::operator= | ( | Queue< T > && |  | ) |
| delete

## ◆ push()

template<typename T>

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

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

## ◆ shutdown()

template<typename T>

void osmium::thread::Queue< T >::shutdown | ( |  | ) |
| inline

## ◆ size()

template<typename T>

std::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 consumers when data is available in the queue.

## ◆ m_in_use

template<typename T>

std::atomic<bool> osmium::thread::Queue< T >::m_in_use {true}
| private

## ◆ m_max_size

template<typename T>

const std::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

## ◆ m_space_available

template<typename T>

std::condition_variable osmium::thread::Queue< T >::m_space_available
| private

Used to signal producers when queue is not full.

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

- include/osmium/thread/queue.hpp