1 #ifndef theplu_yat_utility_priority_queue 2 #define theplu_yat_utility_priority_queue 21 #include "yat_assert.h" 23 #include <boost/thread.hpp> 53 template<
typename T,
class Compare = std::less<T> >
63 typedef typename std::set<T, Compare>::size_type
size_type;
89 boost::unique_lock<boost::mutex> lock(mutex_);
98 boost::unique_lock<boost::mutex> lock(mutex_);
112 boost::unique_lock<boost::mutex> lock(mutex_);
114 condition_.wait(lock);
124 boost::unique_lock<boost::mutex> lock(mutex_);
129 condition_.notify_one();
133 #ifdef YAT_HAVE_RVALUE 143 boost::unique_lock<boost::mutex> lock(mutex_);
144 q_.insert(std::move(t));
148 condition_.notify_one();
158 boost::unique_lock<boost::mutex> lock(mutex_);
169 boost::unique_lock<boost::mutex> lock(mutex_);
184 boost::unique_lock<boost::mutex> lock(mutex_);
192 std::set<T, Compare> q_;
193 mutable boost::mutex mutex_;
194 boost::condition_variable condition_;
196 void pop(T& value,
const boost::unique_lock<boost::mutex>& lock)
203 typename std::set<T, Compare>::iterator it = q_.end();
204 YAT_ASSERT(q_.size());
211 const std::set<T, Compare>& q(
void)
const 213 boost::unique_lock<boost::mutex> lock(mutex_);
PriorityQueue(const PriorityQueue &other)
Copy constructor.
Definition: PriorityQueue.h:80
The Department of Theoretical Physics namespace as we define it.
void clear(void)
clear queue
Definition: PriorityQueue.h:87
T value_type
Type of object stored in Queue.
Definition: PriorityQueue.h:58
Multi-thread safe priority queue.
Definition: PriorityQueue.h:54
PriorityQueue(void)
Create a PriorityQueue with no elements.
Definition: PriorityQueue.h:68
size_type size(void) const
Definition: PriorityQueue.h:156
bool try_pop(T &value)
Definition: PriorityQueue.h:167
bool empty(void) const
Definition: PriorityQueue.h:96
PriorityQueue & operator=(const PriorityQueue &lhs)
assignment operator
Definition: PriorityQueue.h:182
std::set< T, Compare >::size_type size_type
Definition: PriorityQueue.h:63
PriorityQueue(const Compare &comp)
Create a PriorityQueue with comp as Compare functor.
Definition: PriorityQueue.h:73
void push(const T &t)
insert an element into container
Definition: PriorityQueue.h:122
void pop(T &value)
access next element is queue
Definition: PriorityQueue.h:110