MCPcopy Create free account
hub / github.com/Lwhyz/workspace / taskqueue

Class taskqueue

include/workspace/taskqueue.hpp:15–55  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

13 */
14template <typename T>
15class taskqueue {
16 std::mutex tq_lok;
17 std::deque<T> q;
18
19public:
20 using size_type = typename std::deque<T>::size_type;
21 taskqueue() = default;
22 taskqueue(const taskqueue&) = delete;
23 taskqueue(taskqueue&&) = default;
24
25public:
26 void push_back(T& v) {
27 std::lock_guard<std::mutex> lock(tq_lok);
28 q.emplace_back(v);
29 }
30 void push_back(T&& v) {
31 std::lock_guard<std::mutex> lock(tq_lok);
32 q.emplace_back(std::move(v));
33 }
34 void push_front(T& v) {
35 std::lock_guard<std::mutex> lock(tq_lok);
36 q.emplace_front(v);
37 }
38 void push_front(T&& v) {
39 std::lock_guard<std::mutex> lock(tq_lok);
40 q.emplace_front(std::move(v));
41 }
42 bool try_pop(T& tmp) {
43 std::lock_guard<std::mutex> lock(tq_lok);
44 if (!q.empty()) {
45 tmp = std::move(q.front());
46 q.pop_front();
47 return true;
48 }
49 return false;
50 }
51 size_type length() {
52 std::lock_guard<std::mutex> lock(tq_lok);
53 return q.size();
54 }
55};
56
57} // namespace details
58} // namespace wsp

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected