Skip to content

3.0.0

Choose a tag to compare

@DNedic DNedic released this 23 Feb 23:10
· 19 commits to main since this release
  • Breaking: PopOptional() has been renamed to Pop() as an overload for the Queues
  • Breaking: mpmc::Queue now enforces a power-of-2 size. This is necessary to prevent deadlocks on index overflows.
  • Fixed an incorrect our_turn check in mpmc::Queue that caused
    incorrect behavior when monotonic push/pop counters wrapped around
  • Fixed the push/pop count comparison condition in mpmc::Queue
  • Replaced the two per-slot atomics (push_count/pop_count) in
    mpmc::Queue with a single access_count, reducing memory
    usage and contention per slot
  • Added cacheline alignment for mpmc::Queue slots when
    LOCKFREE_CACHE_COHERENT is enabled, eliminating false sharing between adjacent slots
  • Moved _write_wrapped and _read_wrapped flags in spsc::BipartiteBuf to share cachelines with their respective producer/consumer indexes, reducing cache contention
  • Fixed spsc::RingBuf std::array overloads to use .data()
    instead of .begin(), returning a proper pointer rather than an iterator
  • Ensured PriorityQueues must have at least 2 priorities