Releases: fix8mt/fiber
Release v2.2.0
Release v2.1.0
Changes in this release
- Expanded wiki
- Built-in unit tests using Catch2
- More examples
- Exception handling
namenow first member offiber_params- Expanded sorting for
fiber_monitor - New global flags
hidedetached,skipmain,termthrow,excepthandling name()returnsstd::string_view- using
std::invocable - removed detached queue from
cvars - exit path for
fiber_exit - self-switch detection
jfibersize_detached(),get_exception_ptr()make_stack(),wait_any(),launch_all_n(),launch_all_with_params_n()struct std::hash<FIX8::fiber_id>- bug fixes, improvements
Release v2.0.4
New implementation, now known as FIX8::fiber
This is a novel fiber implementation with a similar interface to std::thread. Taking any callable object, fibers cooperatively yield amongst themselves and the calling function within a single thread. Using fibers, single threaded applications can be written as though they were multi-threaded, with the advantage that no concurrency management is required. For multi-threaded applications, each thread maintains its own list of running fibers, leaving the user to implement their own concurrency controls. This implementation allows you to move fibers between threads. This can be used to share work or scale an application by adding more fibers to other or new threads.
- x86_64 Linux only
- single header-only
- stackful fibers; stacksize configurable for each fiber
- supports any callable object (eg. function, class member, lambda expression) with optional arguments
- heap based, memory-mapped or placement stacks; user definable stack can also be used
- context switch implemented with inline assembly
- fibers can be moved to other threads (can be configured out for performance)
std::invokestyle ctor, with arguments perfectly forwarded to the callable- extended API, supporting
resume,resume_if,resume_with,kill,kill_all,suspend,schedule,join,join_if,detach,resume_main,schedule_if,move,suspend_if,wait_alland more - built-in fiber printer
- optional built-in terminal based monitor
- helper templates including
async,make_fiber,launch_allandlaunch_all_with_paramsand more - supports
fibersandthis_fibernamespaces - ctor based fiber parameter struct (POD) - including fiber name, custom stack and stack size, launch policy, launch order and auto join
- built-in round-robin scheduler
- can be used with
std::packaged_task,std::future,std::promiseand so forth - fast, very lightweight
- fiber exceptions and handling
- built-in instrumentation (can be configured out for performance)
- lots of examples
- full API documentation
- supports
jfiber(similar tostd::jthread)
Full Changelog: v2.0.1...v2.0.1
v1.3.1
v1.2.0
v1.1.0
Initial release
Initial release with working examples.