pevents 2.x transition
This is the final release of pevents 1.x before the master
branch switches to version 2.0 based off the atomic_wait_all
branch.
The API for this pevents release has not changed from the initial version and anyone wishing to upgrade to the latest w/out any breaking changes to the API and without any changes to the underlying algorithm should update to this release.
Following this release, several PRs might/will be merged into master
that might require some changes to ensure compatibility:
- The
atomic_wait_all
branch will be merged. This branch contains some optimizations to WFMO waits but might also perform (slightly) worse when waiting on a significant number of events as it features a deadlock detection and avoidance scheme. This change lets calls to WFMO atomically obtain all events passed in to the function, meaning that until the point where the WFMO call returns, all the events it is waiting on will remain available for other threads to acquire. This reduces the chance of deadlocks occuring due to any cyclic lock dependencies. (See #20.) - The
rename
branch might be merged. This branch renames the event fromneosmart_event_t
topevent_t
in theneosmart
namespace. A backwards compatibilitytypedef
will be provided. (See #12.) - The library will probably be updated to use an intrusive list instead of allocating an
std::vector
to track outstanding WFMO waits on an event. This will reduce memory allocations and improve performance, but changes the internal behavior of the library. (See #26.) - The library will include WFMO functionality by default, changing the need to use
-DWFMO
when compiling to support WFMO functionality into using-DNO_WFMO
when WFMO functionality is not needed, as I believe the majority of pevents users come for the WFMO support. (See #24.)
Contributors
- @mqudsi authored and maintains the library
- @GTValentine made their first contribution in #3
- @unvestigate made their first contribution in #4
- @fengga made their first contribution in #14