Thrill
0.1
|
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.
#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< T > | queue_ |
the actual data queue More... | |
using const_reference = const T& |
Definition at line 37 of file concurrent_bounded_queue.hpp.
using difference_type = std::ptrdiff_t |
Definition at line 39 of file concurrent_bounded_queue.hpp.
Definition at line 36 of file concurrent_bounded_queue.hpp.
using size_type = std::size_t |
Definition at line 38 of file concurrent_bounded_queue.hpp.
using value_type = T |
Definition at line 35 of file concurrent_bounded_queue.hpp.
|
default |
default constructor
|
inline |
move-constructor
Definition at line 56 of file concurrent_bounded_queue.hpp.
|
inline |
Clears the queue.
Definition at line 92 of file concurrent_bounded_queue.hpp.
|
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.
|
inline |
Returns: true if queue has no items; false otherwise.
Definition at line 86 of file concurrent_bounded_queue.hpp.
|
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.
|
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.
|
inline |
Pushes a copy of source onto back of the queue.
Definition at line 62 of file concurrent_bounded_queue.hpp.
|
inline |
Pushes given element into the queue by utilizing element's move constructor
Definition at line 70 of file concurrent_bounded_queue.hpp.
|
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.
|
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.
|
private |
condition variable signaled when an item arrives
Definition at line 49 of file concurrent_bounded_queue.hpp.
|
mutableprivate |
the mutex to lock before accessing the queue
Definition at line 46 of file concurrent_bounded_queue.hpp.
|
private |
the actual data queue
Definition at line 43 of file concurrent_bounded_queue.hpp.