31 lines
1.3 KiB
Markdown
31 lines
1.3 KiB
Markdown
|
# Simple Thread Pool for POSIX pthread
|
||
|
|
||
|
This is a very simple implementation of a ThreadPool that uses POSIX threads. It's written to be simple, not versatile.
|
||
|
|
||
|
### License
|
||
|
|
||
|
MIT. In other words, you're free to do with this code whatever you want.
|
||
|
|
||
|
### 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_pthread.h`
|
||
|
* Add the sources in the directory `src` to your sources
|
||
|
* Link to pthread (with `-pthread` on Linux/MAC/POSIX systems, or download the Windows version of pthread and use it)
|
||
|
* Start coding!
|
||
|
|
||
|
Using the code is very simple. All you have to do is:
|
||
|
|
||
|
* Create an object `ThreadPool_pthread pool(num)`, where num is the number of threads
|
||
|
* Use the member function `pool.push_task(function, parameters)`, to add tasks to the pool, where `function` is a function pointer to the function to be added, and `parameters` is a `void*` that contains the parameters.
|
||
|
* Call `pool.finish()`, which will block until all tasks are finished.
|
||
|
|
||
|
Note: Return values in the `function` are omitted.
|
||
|
Note: The function signature is `void* function(void* parameters)`.
|
||
|
|
||
|
### Makefiles
|
||
|
|
||
|
There's a make file that builds the example. There's also a qmake file that builds the example too.
|