gtsam_points
Loading...
Searching...
No Matches
tbb_concurrent_queue.hpp
Go to the documentation of this file.
1#ifndef GUIK_TBB_CONCURRENT_QUEUE_HPP
2#define GUIK_TBB_CONCURRENT_QUEUE_HPP
3
4#include <tbb/concurrent_queue.h>
6
7namespace guik {
8
9template <typename T>
11public:
13 virtual ~TbbConcurrentQueue() override {}
14
15 virtual size_t size() const override {
16 return queue.unsafe_size();
17 }
18
19 virtual void push(const T& item) override {
20 queue.push(item);
21 }
22
23 virtual std::vector<T> try_pop(int max_num_items) override {
24 std::vector<T> items;
25 items.reserve(max_num_items);
26
27 for (int i = 0; i < max_num_items; i++) {
28 T item;
29 if (queue.try_pop(item)) {
30 items.emplace_back(item);
31 }
32 }
33 return items;
34 }
35
36private:
37 tbb::concurrent_queue<T> queue;
38};
39
40} // namespace guik
41
42#endif
Definition concurrent_queue.hpp:10
Definition tbb_concurrent_queue.hpp:10
virtual void push(const T &item) override
Definition tbb_concurrent_queue.hpp:19
virtual std::vector< T > try_pop(int max_num_items) override
Definition tbb_concurrent_queue.hpp:23
virtual ~TbbConcurrentQueue() override
Definition tbb_concurrent_queue.hpp:13
virtual size_t size() const override
Definition tbb_concurrent_queue.hpp:15
TbbConcurrentQueue()
Definition tbb_concurrent_queue.hpp:12
Definition drawable_container.hpp:9