Releases: benny-edlund/task-pool
Task Pool v4.0
Practical experience in production over past year showed a need to launch tasks on main thread so all submit functions got new required argument with a std::launch::async to pass the task to the thread pool or std::launch::deferred to queue the task in the deferred pool which can then be processed by the enclosing application using pool.invoke_deferred()
What's Changed
- Launch deferred #21 by @benny-edlund in #23
- Build update by @benny-edlund in #24
Full Changelog: v3.1.0...v4.0.0
Task Pool v3.1
Task Pool v3.1
Spending more time on examples using cancellation paid off as it revealed two bugs locking up the pool when using abort()
if the tasks depended on pipelines with a valid future.
What's Changed
- Fixed bug causing pipelines to block on abort
- Conversion operator of pipes into futures that steal futures ( static_caststd::future(pipe) )
- Added 'collage' example program
Full Changelog: v3.0.0...v3.1.0
v3.0.0
Task Pool v3.0
After spending some time writing example applications for the project and using a few allocator implementation it became apparent that although appealing passing merely the allocator template to task_pool
started causing problems with rebinding of allocators that take many template parameters. The code is easier to maintain if a fully specified allocator type is passed to the taskpool.
As this is a change to the definition of the task_pool
template this becomes a major version change however all code using v2.0 that does not declare use of custom allocators should be source compatible.
What's Changed
- Changed definition of
be::task_pool_t
to require a fully specified template type - Changed declaration of the type alias
be::task_pool
tobe::task_pool_t<std::allocator<void>>
- Fixed bug that prevented use of member function pointer with lazy arguments
- Fixed bugs in rebinding allocators
- Added ability to detach pipelines using
be::detatch
as the last pipeline step - Added example programs
Full Changelog: v2.0.0...v3.0.0
v2.0.0
Task Pool v2.0
After some use of v1.0 api I decided it needed some improvements, needing to pass allocators to the submit call was not ideal to say the least and when working in the pipe operator it was clear that would not be acceptable that allocators could not be passed through.
As a result this version has some breaking changes that that I'm hoping will improve the project usage overall.
What's Changed
- Added function composition using pipe operator in
pool.h
- Remove allocator variants of
submit
in favor of templating the task bool so that we do not need to pass allocators all the time reducing the overload sets which should lead to better compile times. Allocators are now always used and simply defaulted tostd::allocator
when not specified. - Change
wait_for_tasks()
towait()
also adding a full future-like api support withget()
wait_for()
andwait_until()
- Changed
task_pool.h
to simplypool.h
- API is now const and noexcept correct ( to the best of my mortal abilities )
- Dropped support for callables with templated call operators. It just got too hard
Full Changelog: v1.0.0...v2.0.0
v1.0.0
Task Pool v1.0
As all planned features have now been implemented it is time to release version 1.0 of Task Pool
Feature
- Thread pool with support for C++14
- Lazy task parameters
- Cooperative cancellation
- Allow use of allocators to store tasks and intermediate task parameters
- Allow passing allocators to task functions at execution
- Allow custom promise and future types for return values
See README.md for details on usage.
v0.0.1
Initial library looking at release mechanics.