Thrill  0.1
ConcurrentBoundedQueue< T > Class Template Reference

Detailed Description

template<typename T>
class thrill::common::ConcurrentBoundedQueue< T >

This is a queue, similar to std::queue and tbb::concurrent_bounded_queue, except that it uses mutexes for synchronization.

StyleGuide is violated, because signatures are expected to match those of std::queue.

Definition at line 32 of file concurrent_bounded_queue.hpp.

+ Inheritance diagram for ConcurrentBoundedQueue< T >:

#include <concurrent_bounded_queue.hpp>

Public Types

using const_reference = const T &
 
using difference_type = std::ptrdiff_t
 
using reference = T &
 
using size_type = std::size_t
 
using value_type = T
 

Public Member Functions

 ConcurrentBoundedQueue ()=default
 default constructor More...
 
 ConcurrentBoundedQueue (ConcurrentBoundedQueue &&other)
 move-constructor More...
 
void clear ()
 Clears the queue. More...
 
template<typename... Arguments>
void emplace (Arguments &&... args)
 
bool empty () const
 Returns: true if queue has no items; false otherwise. More...
 
void pop (T &destination)
 
template<typename Rep , typename Period >
bool pop_for (T &destination, const std::chrono::duration< Rep, Period > &timeout)
 
void push (const T &source)
 Pushes a copy of source onto back of the queue. More...
 
void push (T &&elem)
 
size_t size ()
 
bool try_pop (T &destination)
 

Private Attributes

std::condition_variable cv_
 condition variable signaled when an item arrives More...
 
std::mutex mutex_
 the mutex to lock before accessing the queue More...
 
std::queue< Tqueue_
 the actual data queue More...
 

Member Typedef Documentation

◆ const_reference

using const_reference = const T&

Definition at line 37 of file concurrent_bounded_queue.hpp.

◆ difference_type

using difference_type = std::ptrdiff_t

Definition at line 39 of file concurrent_bounded_queue.hpp.

◆ reference

using reference = T&

Definition at line 36 of file concurrent_bounded_queue.hpp.

◆ size_type

using size_type = std::size_t

Definition at line 38 of file concurrent_bounded_queue.hpp.

◆ value_type

using value_type = T

Definition at line 35 of file concurrent_bounded_queue.hpp.

Constructor & Destructor Documentation

◆ ConcurrentBoundedQueue() [1/2]

default constructor

◆ ConcurrentBoundedQueue() [2/2]

move-constructor

Definition at line 56 of file concurrent_bounded_queue.hpp.

Member Function Documentation

◆ clear()

void clear ( )
inline

Clears the queue.

Definition at line 92 of file concurrent_bounded_queue.hpp.

◆ emplace()

void emplace ( Arguments &&...  args)
inline

Pushes a new element into the queue. The element is constructed with given arguments.

Definition at line 79 of file concurrent_bounded_queue.hpp.

◆ empty()

bool empty ( ) const
inline

Returns: true if queue has no items; false otherwise.

Definition at line 86 of file concurrent_bounded_queue.hpp.

◆ pop()

void pop ( T destination)
inline

If value is available, pops it from the queue, move it to destination. If no item is in the queue, wait until there is one.

Definition at line 111 of file concurrent_bounded_queue.hpp.

◆ pop_for()

bool pop_for ( T destination,
const std::chrono::duration< Rep, Period > &  timeout 
)
inline

If value is available, pops it from the queue, move it to destination. If no item is in the queue, wait until there is one, or timeout and return false. NOTE: not available in TBB!

Definition at line 123 of file concurrent_bounded_queue.hpp.

◆ push() [1/2]

void push ( const T source)
inline

Pushes a copy of source onto back of the queue.

Definition at line 62 of file concurrent_bounded_queue.hpp.

◆ push() [2/2]

void push ( T &&  elem)
inline

Pushes given element into the queue by utilizing element's move constructor

Definition at line 70 of file concurrent_bounded_queue.hpp.

◆ size()

size_t size ( )
inline

return number of items available in the queue (tbb says "can return negative size", due to pending pop()s, but we ignore that here).

Definition at line 136 of file concurrent_bounded_queue.hpp.

◆ try_pop()

bool try_pop ( T destination)
inline

If value is available, pops it from the queue, move it to destination, destroying the original position. Otherwise does nothing.

Definition at line 99 of file concurrent_bounded_queue.hpp.

Member Data Documentation

◆ cv_

std::condition_variable cv_
private

condition variable signaled when an item arrives

Definition at line 49 of file concurrent_bounded_queue.hpp.

◆ mutex_

std::mutex mutex_
mutableprivate

the mutex to lock before accessing the queue

Definition at line 46 of file concurrent_bounded_queue.hpp.

◆ queue_

std::queue<T> queue_
private

the actual data queue

Definition at line 43 of file concurrent_bounded_queue.hpp.


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