class mrpt::WorkerThreadsPool

A thread pool.

Partly based on: https://github.com/progschj/ThreadPool (ZLib license)

(New in MRPT 2.1.0)

#include <mrpt/core/WorkerThreadsPool.h>

class WorkerThreadsPool
{
public:
    // enums

    enum queue_policy_t;

    // construction

    WorkerThreadsPool();

    WorkerThreadsPool(
        std::size_t num_threads,
        queue_policy_t p = POLICY_FIFO,
        const std::string& threadsName = "WorkerThreadsPool"
        );

    //
methods

    void resize(std::size_t num_threads);
    void clear();

    template <class F, class... Args>
    auto enqueue(F&& f, Args&&... args);

    std::size_t pendingTasks() const;
    void name(const std::string& name);
    std::string name() const;
};

Methods

void clear()

Stops and deletes all worker threads.

template <class F, class... Args>
auto enqueue(F&& f, Args&&... args)

Enqueue one new working item, to be executed by threads when any is available.

std::size_t pendingTasks() const

Returns the number of enqueued tasks, currently waiting for a free working thread to process them.

void name(const std::string& name)

Sets the private thread names of threads in this pool.

Names can be seen from debuggers, profilers, etc. and will follow the format ${name}[i] with ${name} the value supplied in this method (Method new in MRPT 2.1.5)

std::string name() const

Returns the base name of threads in this pool.