UPDATE: I have replaced the original pthread with tinycthread, so it's working on both Windows and POSIX systems.
Currently, the implementation:
Works with pthreads only, but API is intentionally opaque to allow other implementations (Windows for instance).- [New] Based on tinycthread, provided Windows/Linux/macOS supports.
- Starts all threads on creation of the thread pool.
- Reserves one task for signaling the queue is full.
- Stops and joins all worker threads on destroy.
You can use the source code in your project directly.
But it becomes more easily to use conan.
-
Install conan first according to this reference.
-
add it to your conan.txt:
[requires] ... tinycthreadpool/1.0
-
At last, install or build the lib with conan automatically.
conan install <path to conan.txt> --build=missing
Enjoy!
The API contains addtional unused 'flags' parameters that would allow some additional options:
- Lazy creation of threads (easy)
- Reduce number of threads automatically (hard)
- Unlimited queue size (medium)
- Kill worker threads on destroy (hard, dangerous)
Support Windows API (medium)- Reduce locking contention (medium/hard)