/* A simple queue protected by mutexes. * * Author: Georg Martin Reinke <georg.reinke@rwth-aachen.de> * SPDX-FileCopyrightText: 2014-2023 Institute for Automation of Complex Power Systems, RWTH Aachen University * SPDX-License-Identifier: Apache-2.0 */ #pragma once #include <mutex> #include <queue> namespace villas { template <typename T> class Queue { protected: std::queue<T> queue; std::mutex mtx; public: void push(T p) { std::unique_lock<std::mutex> guard(mtx); queue.push(p); } T pop() { std::unique_lock<std::mutex> guard(mtx); T res = queue.front(); queue.pop(); return res; } bool empty() { std::unique_lock<std::mutex> guard(mtx); return queue.empty(); } }; } // namespace villas