7 #ifndef NT_SUPPORT_CONCURRENT_QUEUE_H_
8 #define NT_SUPPORT_CONCURRENT_QUEUE_H_
13 #include <condition_variable>
19 std::unique_lock<std::mutex> mlock(mutex_);
20 return queue_.empty();
23 typename std::queue<T>::size_type size()
const {
24 std::unique_lock<std::mutex> mlock(mutex_);
29 std::unique_lock<std::mutex> mlock(mutex_);
30 while (queue_.empty()) {
33 auto item = std::move(queue_.front());
39 std::unique_lock<std::mutex> mlock(mutex_);
40 while (queue_.empty()) {
43 item = queue_.front();
47 void push(
const T& item) {
48 std::unique_lock<std::mutex> mlock(mutex_);
55 std::unique_lock<std::mutex> mlock(mutex_);
56 queue_.push(std::forward<T>(item));
61 template <
typename... Args>
62 void emplace(Args&&... args) {
63 std::unique_lock<std::mutex> mlock(mutex_);
64 queue_.emplace(std::forward<Args>(args)...);
75 mutable std::mutex mutex_;
76 std::condition_variable cond_;
79 #endif // NT_SUPPORT_CONCURRENT_QUEUE_H_
Definition: ConcurrentQueue.h:16