C++ std::thread thread pool
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
Samer Afach 11332c8cf3
Some reformatting and changed packaged_task to function
4 years ago
include Some reformatting and changed packaged_task to function 4 years ago
.gitignore Some reformatting and changed packaged_task to function 4 years ago
CMakeLists.txt C++11 for unix added. Standard CMake command doesn't work on gcc 4.9 6 years ago
README.md Added license information. 6 years ago
main.cpp Some reformatting and changed packaged_task to function 4 years ago

README.md

Simple Thread Pool for C++11

This is a very simple implementation of a ThreadPool based on std::thread. It's written to be simple, not versatile. It works very efficiently for coarse-grained tasks (hence, no multi-pool task-stealing from other threads, etc...).

License

MIT. In other words, you're free to do with this code whatever you want. Enjoy!

Terms (in short words): -You're free to do anything you wish with this simple library, including any embedding or modifications you wish, with static or dynamic linking (you can't dynamically link it... it's header only! :-) ). -The creator of this library is not to be help liable for anything you do with it. Using this library is your own responsibility

Usage

There is an example on how to use the code in the directory examples.

Other than that, all you have to do is:

  • Include the file ThreadPool.h (the library is header-only, no need for sources)
  • Start coding!

Using the code is very simple. All you have to do is:

  • Create an object ThreadPool pool
  • Use the member function pool.push(function), to add tasks to the pool, where function is a function object (functor) of the task of type void().
  • Call pool.finish(), which will block until all tasks are finished.

Note: Return values in the function are omitted. Note: The task function's signature is void function(). If you need to parametrize the function, use std::bind or lambdas.

Makefiles

There's a make file that builds the example. There's also a qmake file that builds the example too.

Credits

This library was written by Samer Afach, find this code in the repository git.afach.de