- It is highly scalable and fast.
- It is header only.
- No external dependencies, only standard library needed.
- It implements both work-stealing and work-distribution balancing startegies.
- It implements cooperative scheduling strategy.
Example run: Post job to thread pool is much faster than for boost::asio based thread pool.
Benchmark job reposting
***thread pool cpp***
reposted 1000001 in 61.6754 ms
reposted 1000001 in 62.0187 ms
reposted 1000001 in 62.8785 ms
reposted 1000001 in 70.2714 ms
***asio thread pool***
reposted 1000001 in 1381.58 ms
reposted 1000001 in 1390.35 ms
reposted 1000001 in 1391.84 ms
reposted 1000001 in 1393.19 ms
See benchmark/benchmark.cpp for benchmark code.
All code except MPMCBoundedQueue is under MIT license.
- Spin lock replaced to conditional variable. Spurious wakeup protection added.
- Affinity (by round-robin) added for Linux/Solaris/FreeBSD. Affinity control flag added.
- Round Robin Queue Servicing from inkooboo#24 are implemented.
- Oracle Developer Studio support
- Sleep counter added.
- Queue overflow round-robin improved protection.