CNum 0.2.1
CPU-optimized ML library for C++
Loading...
Searching...
No Matches
ConcurrentQueue.h
Go to the documentation of this file.
1#ifndef CONCURRENT_QUEUE
2#define CONCURRENT_QUEUE
4#include <mutex>
5#include <queue>
6#include <condition_variable>
7
9
19 * ThreadPool class can easily be swapped with the lock-free version on my
20 * GitHub
21 */
22 template <typename T>
24 private:
25 std::mutex _mtx;
26 std::queue<T> _q;
27 std::condition_variable _cv;
28 bool _stop;
29
30 public:
33 ~ConcurrentQueue() = default;
37 void enqueue(T val);
38
42 bool dequeue(T &val);
43
48 void set_stop();
52 bool empty();
53
57 };
58
59#include "CNum/DataStructs/ConcurrentQueue.tpp"
60};
61
62#endif
ConcurrentQueue()
Default constructor.
Definition ConcurrentQueue.h:3
void enqueue(T val)
Enqueue a element.
Definition ConcurrentQueue.h:6
void set_stop()
Set stop flag for thread pool.
Definition ConcurrentQueue.h:34
bool dequeue(T &val)
dequeue a value
Definition ConcurrentQueue.h:19
bool stop_is_set()
Check stop flag for thread pool.
Definition ConcurrentQueue.h:42
bool empty()
Check if the queue is empty.
Definition ConcurrentQueue.h:49
The data structures used in CNum.
Definition ConcurrentQueue.h:8