7 #ifndef WPIUTIL_SUPPORT_CONCURRENTQUEUE_H_ 8 #define WPIUTIL_SUPPORT_CONCURRENTQUEUE_H_ 14 #include "support/condition_variable.h" 15 #include "support/mutex.h" 23 std::unique_lock<wpi::mutex> mlock(mutex_);
24 return queue_.empty();
27 typename std::queue<T>::size_type size()
const {
28 std::unique_lock<wpi::mutex> mlock(mutex_);
33 std::unique_lock<wpi::mutex> mlock(mutex_);
34 while (queue_.empty()) {
37 auto item = std::move(queue_.front());
43 std::unique_lock<wpi::mutex> mlock(mutex_);
44 while (queue_.empty()) {
47 item = queue_.front();
51 void push(
const T& item) {
52 std::unique_lock<wpi::mutex> mlock(mutex_);
59 std::unique_lock<wpi::mutex> mlock(mutex_);
60 queue_.push(std::forward<T>(item));
65 template <
typename... Args>
66 void emplace(Args&&... args) {
67 std::unique_lock<wpi::mutex> mlock(mutex_);
68 queue_.emplace(std::forward<Args>(args)...);
79 mutable wpi::mutex mutex_;
80 wpi::condition_variable cond_;
85 #endif // WPIUTIL_SUPPORT_CONCURRENTQUEUE_H_ Definition: SocketError.cpp:17
Definition: ConcurrentQueue.h:20