Skip to content

Releases: benny-edlund/task-pool

Task Pool v4.0

26 Apr 23:35
Compare
Choose a tag to compare

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

Full Changelog: v3.1.0...v4.0.0

Task Pool v3.1

06 Feb 01:26
Compare
Choose a tag to compare

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

03 Feb 01:15
cf0740d
Compare
Choose a tag to compare

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 to be::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

28 Jan 03:48
74f0f09
Compare
Choose a tag to compare

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 to std::allocator when not specified.
  • Change wait_for_tasks() to wait() also adding a full future-like api support with get() wait_for() and wait_until()
  • Changed task_pool.h to simply pool.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

23 Jan 08:21
88c85ea
Compare
Choose a tag to compare

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

22 Jan 04:17
0202d4f
Compare
Choose a tag to compare
v0.0.1 Pre-release
Pre-release

Initial library looking at release mechanics.