template<typename T>
mt::job_queue class

A generic job queue structure that implements the classical consumer-producer pattern. It's thread-safe and can be used to transfer any type.

Example

#include <job_queue.hpp>

// at most 100 integers can be placed on the queue
mt::job_queue<int> jq(100);

// in some producer thread
jq.add_job(1);

// in some consumer thread
jq.pop_job();

// to signal that a job queue is inactive and no more threads should use it
jq.stop_queue();

Constructors, destructors, conversion operators

job_queue(size_t cap)
Construct a new job queue object.

Public functions

auto add_job(const T& job) -> bool -> auto
Add a new job to the queue.
auto pop_job() -> T -> auto
Pop a job from the queue.
void stop_queue()
Mark the queue as inactive and notify all waiters.
auto size() const -> size_t -> auto
Return the size of the queue.
auto cap() const -> size_t -> auto
Return the capacity of the queue.

Function documentation

template<typename T>
mt::job_queue<T>::job_queue(size_t cap)

Construct a new job queue object.

Parameters
cap capacity of the job queue

template<typename T>
auto mt::job_queue<T>::add_job(const T& job) -> bool

Add a new job to the queue.

Parameters
job new job to be placed onto the queue
Returns true if job was successfully added to the queue

template<typename T>
auto mt::job_queue<T>::pop_job() -> T

Pop a job from the queue.

Returns T is the job returned. It's empty if failed to pop job

template<typename T>
auto mt::job_queue<T>::size() const -> size_t

Return the size of the queue.

Returns size_t, the size of the queue

template<typename T>
auto mt::job_queue<T>::cap() const -> size_t

Return the capacity of the queue.

Returns size_t, the capacity of the queue