arcu 0.1.2

An Rcu implementation using an Arc to keep the read critical section short and handle cleanup
Documentation
  • Coverage
  • 100%
    27 out of 27 items documented0 out of 20 items with examples
  • Size
  • Source code size: 34.57 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 638.63 kB This is the summed size of all files generated by rustdoc for all configured targets
  • Ø build duration
  • this release: 9s Average build duration of successful builds.
  • all releases: 9s Average build duration of successful builds in releases after 2024-10-23.
  • Links
  • Skgland/Arcu
    0 0 2
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • Skgland

Arc based Rcu implementation originally implementated in mthom/scryer-prolog#1980

A r c
  R c u
A r c u

The atomics based version performs lock-free[^1] reads. By using Arc we keep the read-critical-section short and free of user defined code and automatically perform cleanup when no reference remains.

To coordinate reads and writes [EpochCounter]s from an [EpochCounterPool] are used. Each read used an EpochCounter from the EpochCounterPool of the Arcu incrementing it once before entering the RCS and once more on leaving the RCS. Each write checks against all EpochCounters in the pool, blocking until it is safe to decrement the strong count of the Arc that was replaced by the write.

[^1]: when using thread local epoch counter with the global epoch counter pool, the initial read may block while adding the threads epoch counter to the pool