Task Manager  1.0.0
A modern C++ task management library.
Task Manager Documentation
alt text

TaskManager is an asynchronous task management library using the features of C++14.

Requirements

A compiler supporting the C++14 features.

Features

Components
Interface

Basic Usage

Manager

Note: The following examples use chrono literals.

{C++}
// Create the thread pool with the initial number of threads (2 here).
Task::Module::init(2);
// Create a task manager with one worker.
auto manager = Task::Module::makeManager(1);
// Add a new task and get its future.
auto future = manager.push([] { return 42; });
// Get the result from the future and print it.
std::cout << future.get() << std::endl; // Prints 42
// Not necessary here, but the stop method ensures that all launched tasks have been executed.
manager.stop().get();

In the above example if we were to push more tasks, only one at a time would be executed as the manager has only one worker assigned.

###### Scheduler

{C++}
// Create the thread pool with the initial number of threads (2 here).
Task::Module::init(2);
// Create a scheduler with one worker.
auto scheduler = Task::Module::makeScheduler(1);
// Declare the variable n.
size_t n = 0;
// Add new tasks and get the future.
auto future = scheduler.scheduleIn("Task1", 2s, [&n] { n++; });
scheduler.scheduleIn("Task2", 1s, [&n] { n = 41 });
// Get the future and print the updated value.
future.get()
std::cout << n << std::endl; // Prints 42
// Not necessary here, but the stop method ensures that all the scheduled tasks have been executed.
scheduler.stop().get();

The same note applies for the scheduler regarding the number of associated workers. Also an identifier ("TaskX") is provided so that periodic tasks could be removed.