1 #ifndef theplu_yat_utility_basic_queue 2 #define theplu_yat_utility_basic_queue 23 #include <boost/thread.hpp> 33 template<
class Derived,
typename T,
class Container>
55 boost::unique_lock<boost::mutex> lock(other.mutex_);
71 boost::unique_lock<boost::mutex> lock(mutex_);
81 boost::unique_lock<boost::mutex> lock(mutex_);
95 boost::unique_lock<boost::mutex> lock(mutex_);
97 condition_.wait(lock);
103 static_cast<Derived*
>(
this)->pop_impl(value, lock);
112 boost::unique_lock<boost::mutex> lock(mutex_);
113 static_cast<Derived*
>(
this)->push_impl(t, lock);
117 condition_.notify_one();
121 #ifdef YAT_HAVE_RVALUE 131 boost::unique_lock<boost::mutex> lock(mutex_);
132 static_cast<Derived*
>(
this)->push_impl(std::move(t), lock);
136 condition_.notify_one();
146 boost::unique_lock<boost::mutex> lock(mutex_);
157 boost::unique_lock<boost::mutex> lock(mutex_);
160 static_cast<Derived*
>(
this)->pop_impl(value, lock);
170 if (
this != &other) {
175 boost::lock(mutex_, other.mutex_);
176 boost::unique_lock<boost::mutex> lock(mutex_, boost::adopt_lock_t());
177 boost::unique_lock<boost::mutex> other_lock(other.mutex_,
178 boost::adopt_lock_t());
186 mutable boost::mutex mutex_;
187 boost::condition_variable condition_;
Container::size_type size_type
Definition: BasicQueue.h:43
void clear(void)
clear queue
Definition: BasicQueue.h:69
size_type size(void) const
Definition: BasicQueue.h:144
BasicQueue(const BasicQueue &other)
Definition: BasicQueue.h:53
The Department of Theoretical Physics namespace as we define it.
bool try_pop(T &value)
Definition: BasicQueue.h:155
void assign(const BasicQueue &other)
Definition: BasicQueue.h:168
Definition: BasicQueue.h:34
BasicQueue(void)
Definition: BasicQueue.h:48
void push(const T &t)
insert an element into container
Definition: BasicQueue.h:110
void pop(T &value)
access next element in queue
Definition: BasicQueue.h:93
bool empty(void) const
Definition: BasicQueue.h:79
Container q_
data
Definition: BasicQueue.h:184
BasicQueue(const Container &container)
Definition: BasicQueue.h:62
void push(T &&t)
insert an element into container
Definition: BasicQueue.h:129
Container::value_type value_type
Type of object stored.
Definition: BasicQueue.h:38