Skip to content

Skgland/Arcu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Arcu

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

A r c u
A r c
R c u

The atomics based version performs lock-free1 reads. By using Arc we keep the read-critical-section short; 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 uses 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.

Footnotes

  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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages