36 lines
1.6 KiB
Markdown
36 lines
1.6 KiB
Markdown
# 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 |