Skip to content

leiless/threadpool.hpp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

threadpool.hpp

threadpool.hpp is a simple header-only thread pool implementation in C++17.

No any extra dependency is required, easy to use.

API

Initialize a threadpool

#include "threadpool.hpp"

constexpr int THREADPOOL_SIZE = /* ... */;
concurrent::threadpool tp(THREADPOOL_SIZE);

Enqueue a task by given function and its arguments

template<typename Fn, typename... Args>
decltype(auto) enqueue(Fn && fn, Args &&... args);

Enqueue a task(block on shutdown)

template<typename Fn, typename... Args>
decltype(auto) enqueue_r(Fn && fn, Args &&... args);

Same as enqueue(), yet the task will still be executed even if the thread pool is shutting down.

Example

#include <iostream>
#include "threadpool.hpp"

int main() {
    constexpr int THREADPOOL_SIZE = 2;
    concurrent::threadpool tp(THREADPOOL_SIZE);
    tp.enqueue_r([]() { std::cout << "hello world" << std::endl; });
    return 0;
}

More checkout test.cpp.

Courtesy

This implementation mainly inspired by progschj/ThreadPool and Build Your Own Threadpool With C++.

Add a new branch for C++ 17. #40 is also very helpful.

License

Released under BSD-2-Clause, more see LICENSE.