From 8541563f716014241a878b968d73d0a0b00891cd Mon Sep 17 00:00:00 2001 From: TravisBot <> Date: Thu, 16 Nov 2017 16:33:28 +0000 Subject: Rebuilding documentation --- syncqueue_8h_source.html | 212 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 212 insertions(+) create mode 100644 syncqueue_8h_source.html (limited to 'syncqueue_8h_source.html') diff --git a/syncqueue_8h_source.html b/syncqueue_8h_source.html new file mode 100644 index 00000000..ff6eeade --- /dev/null +++ b/syncqueue_8h_source.html @@ -0,0 +1,212 @@ + + + + + + +YAGE: yage/util/syncqueue.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
YAGE +  v0.1.1 +
+
Yet Another Game Engine
+
+
+ + + + + +
+
+ +
+
+
+ +
+ +
+ All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
+ + +
+ +
+ +
+
+
syncqueue.h
+
+
+Go to the documentation of this file.
1 #ifndef YAGE_UTIL_SYNCQUEUE_H
+
2 #define YAGE_UTIL_SYNCQUEUE_H
+
3 
+
4 #include <condition_variable>
+
5 #include <mutex>
+
6 #include <queue>
+
7 
+
8 namespace yage
+
9 {
+
10 
+
11 template <typename T>
+
12 class SyncQueue
+
13 {
+
14 public:
+
15  SyncQueue() = default;
+
16  SyncQueue(const SyncQueue &) = delete;
+
17  SyncQueue &operator=(const SyncQueue &) = delete;
+
18 
+
19  T pop();
+
20  void pop(T &item);
+
21  void push(const T &item);
+
22  void push(T &&item);
+
23 
+
24 private:
+
25  std::queue<T> queue_;
+
26  std::mutex mutex_;
+
27  std::condition_variable cond_;
+
28 };
+
29 
+
30 // Template definitions
+
31 
+
32 template <typename T>
+ +
34 {
+
35  std::unique_lock<std::mutex> mlock(mutex_);
+
36 
+
37  while (queue_.empty()) {
+
38  cond_.wait(mlock);
+
39  }
+
40 
+
41  auto item = queue_.front();
+
42  queue_.pop();
+
43  return item;
+
44 }
+
45 
+
46 template <typename T>
+
47 void SyncQueue<T>::pop(T &item)
+
48 {
+
49  std::unique_lock<std::mutex> mlock(mutex_);
+
50 
+
51  while (queue_.empty()) {
+
52  cond_.wait(mlock);
+
53  }
+
54 
+
55  item = queue_.front();
+
56  queue_.pop();
+
57 }
+
58 
+
59 template <typename T>
+
60 void SyncQueue<T>::push(const T &item)
+
61 {
+
62  std::unique_lock<std::mutex> mlock(mutex_);
+
63 
+
64  queue_.push(item);
+
65  mlock.unlock();
+
66  cond_.notify_one();
+
67 }
+
68 
+
69 template <typename T>
+
70 void SyncQueue<T>::push(T &&item)
+
71 {
+
72  std::unique_lock<std::mutex> mlock(mutex_);
+
73 
+
74  queue_.push(std::move(item));
+
75  mlock.unlock();
+
76  cond_.notify_one();
+
77 }
+
78 
+
79 } // namespace yage
+
80 
+
81 #endif
+
SyncQueue()=default
+
SyncQueue & operator=(const SyncQueue &)=delete
+
T pop()
Definition: syncqueue.h:33
+
std::condition_variable cond_
Definition: syncqueue.h:27
+
std::mutex mutex_
Definition: syncqueue.h:26
+
void push(const T &item)
Definition: syncqueue.h:60
+
std::queue< T > queue_
Definition: syncqueue.h:25
+
Definition: syncqueue.h:12
+
+
+ + + + -- cgit