1#ifndef GUIK_CONCURRENT_QUEUE_HPP
2#define GUIK_CONCURRENT_QUEUE_HPP
14 virtual size_t size()
const = 0;
15 virtual void push(
const T& item) = 0;
16 virtual std::vector<T>
try_pop(
int max_num_items) = 0;
25 virtual size_t size()
const override {
26 std::lock_guard<std::mutex> lock(mutex);
30 virtual void push(
const T& item)
override {
31 std::lock_guard<std::mutex> lock(mutex);
32 queue.push_back(item);
35 virtual std::vector<T>
try_pop(
int max_num_items)
override {
36 std::lock_guard<std::mutex> lock(mutex);
42 if (queue.size() <= max_num_items) {
43 std::vector<T> items(queue.begin(), queue.end());
48 std::vector<T> items(queue.begin(), queue.begin() + max_num_items);
49 queue.erase(queue.begin(), queue.begin() + max_num_items);
54 mutable std::mutex mutex;
Definition concurrent_queue.hpp:10
virtual size_t size() const =0
virtual ~ConcurrentQueue()
Definition concurrent_queue.hpp:12
virtual void push(const T &item)=0
virtual std::vector< T > try_pop(int max_num_items)=0
Definition concurrent_queue.hpp:20
virtual std::vector< T > try_pop(int max_num_items) override
Definition concurrent_queue.hpp:35
virtual size_t size() const override
Definition concurrent_queue.hpp:25
StdConcurrentQueue()
Definition concurrent_queue.hpp:22
virtual ~StdConcurrentQueue() override
Definition concurrent_queue.hpp:23
virtual void push(const T &item) override
Definition concurrent_queue.hpp:30
Definition drawable_container.hpp:9