A minimal thread-safe FIFO queue for producer/consumer patterns. Supports blocking pop()
and non-blocking try_pop()
.
#include “/include/tsqueue.hpp”
Template Paramaters
T
- stored element type (must be move-constructible; copyable is fine but not required).void push(T v);
Enqueue an element and wake one waiting consumer.
T pop();
Block until an element is available; remove and return it.
bool try_pop(T& out);
Non-blocking pop; move front into out
if available and return true
, else false
.
TSQueue<T>
provides a simple, efficient, multi-producer / multi-consumer queue.
It uses std::mutex
and std::condition_variable
to protect a std::queue<T>
.
Note: The class does not provide close(); threads blocked in pop() will not exit by themselves. Therefore it is required that threads check their own bool running_
and that they are shut down by setting running_ = false
and pushing a dummy value into the queue. (See example below.)