yat  0.16.4pre
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | Friends | List of all members
theplu::yat::utility::PriorityQueue< T, Compare > Class Template Reference

Multi-thread safe priority queue. More...

#include <yat/utility/PriorityQueue.h>

Inheritance diagram for theplu::yat::utility::PriorityQueue< T, Compare >:
theplu::yat::utility::detail::BasicQueue< PriorityQueue< T, Compare >, T, std::multiset< T, Compare > >

Public Types

typedef std::multiset< T, Compare >::value_type value_type
 Type of object stored.
 
typedef std::multiset< T, Compare >::size_type size_type
 

Public Member Functions

 PriorityQueue (void)
 Create a PriorityQueue with no elements.
 
 PriorityQueue (const Compare &comp)
 Create a PriorityQueue with comp as Compare functor.
 
 PriorityQueue (const PriorityQueue &other)
 Copy constructor.
 
PriorityQueueoperator= (const PriorityQueue &lhs)
 assignment operator
 
void clear (void)
 clear queue More...
 
bool empty (void) const
 
void pop (T &value)
 access next element in queue More...
 
void push (const T &t)
 insert an element into container
 
size_type size (void) const
 
bool try_pop (T &value)
 

Protected Member Functions

void assign (const BasicQueue &other)
 

Protected Attributes

std::multiset< T, Compare > q_
 data
 

Friends

class detail::BasicQueue< PriorityQueue< T, Compare >, T, std::multiset< T, Compare > >
 

Detailed Description

template<typename T, class Compare = std::less<T>>
class theplu::yat::utility::PriorityQueue< T, Compare >

Multi-thread safe priority queue.

This class provides a multi-thread safe priority_queue. The PriorityQueue is typically shared by multiple threads such that some threads push elements and some pop elements. The PriorityQueue is a specifically designed so you can only access the greatest element similar tostd::priority_queue. The difference is that Queue is multi-thread safe, in other words, when one thread access the Queue, other threads are locked out from access so that only one thread touches the Queue at a time and its behaviour is well defined. In a single-thread application there is no point in using the class as std::queue should be prefereble.

Note
Copy constructor and assignment are available but they are not thread safe in the current implementation.
Since
New in yat 0.13

Member Typedef Documentation

typedef std::multiset< T, Compare > ::size_type theplu::yat::utility::detail::BasicQueue< PriorityQueue< T, Compare > , T, std::multiset< T, Compare > >::size_type
inherited

An unsigned integral type.

See also
size(void)

Member Function Documentation

void theplu::yat::utility::detail::BasicQueue< PriorityQueue< T, Compare > , T, std::multiset< T, Compare > >::assign ( const BasicQueue< PriorityQueue< T, Compare >, T, std::multiset< T, Compare > > &  other)
inlineprotectedinherited

assign other to this

void theplu::yat::utility::detail::BasicQueue< PriorityQueue< T, Compare > , T, std::multiset< T, Compare > >::clear ( void  )
inlineinherited

clear queue

Since
new in yat 0.15
bool theplu::yat::utility::detail::BasicQueue< PriorityQueue< T, Compare > , T, std::multiset< T, Compare > >::empty ( void  ) const
inlineinherited
Returns
true if container's size is zero
void theplu::yat::utility::detail::BasicQueue< PriorityQueue< T, Compare > , T, std::multiset< T, Compare > >::pop ( T &  value)
inlineinherited

access next element in queue

Access the next element is queue. If container is empty, process is waiting until other process is inserting element into container.

size_type theplu::yat::utility::detail::BasicQueue< PriorityQueue< T, Compare > , T, std::multiset< T, Compare > >::size ( void  ) const
inlineinherited
Returns
Number of elements stored in container
bool theplu::yat::utility::detail::BasicQueue< PriorityQueue< T, Compare > , T, std::multiset< T, Compare > >::try_pop ( T &  value)
inlineinherited

If Queue is empty() do nothing and return false, else pop the element into value and return true


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

Generated on Thu Dec 12 2019 03:12:10 for yat by  doxygen 1.8.11