Skip to content

pevents 1.22.11

Latest
Compare
Choose a tag to compare
@mqudsi mqudsi released this 17 Nov 20:59

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 from neosmart_event_t to pevent_t in the neosmart namespace. A backwards compatibility typedef 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