vorner / arc-swap

Support atomic operations on Arc itself
Apache License 2.0
778 stars 31 forks source link

The "helping" experimental strategy #48

Closed vorner closed 3 years ago

vorner commented 3 years ago

Adds a new strategy. Also based on debt slots (modified hazard pointers), but doesn't fall back to the locking. The writers are lock-free too.

Closes #23 Relates to #34 and #8.

codecov-io commented 3 years ago

Codecov Report

Merging #48 (17769f2) into master (b45ec18) will decrease coverage by 1.19%. The diff coverage is 90.94%.

@@            Coverage Diff             @@
##           master      #48      +/-   ##
==========================================
- Coverage   90.13%   88.93%   -1.20%     
==========================================
  Files          14       15       +1     
  Lines         892     1157     +265     
==========================================
+ Hits          804     1029     +225     
- Misses         88      128      +40     
Impacted Files Coverage Δ
src/strategy/rw_lock.rs 3.84% <0.00%> (ø)
src/weak.rs 83.33% <ø> (ø)
src/debt.rs 89.53% <60.00%> (-1.93%) :arrow_down:
src/strategy/gen_lock.rs 92.30% <83.33%> (-3.35%) :arrow_down:
src/strategy/helping.rs 85.83% <85.83%> (ø)
src/strategy/hybrid.rs 89.23% <87.50%> (-2.71%) :arrow_down:
src/lib.rs 96.00% <96.49%> (+0.15%) :arrow_up:
src/gen_lock.rs 84.90% <100.00%> (-1.89%) :arrow_down:
tests/random.rs 100.00% <100.00%> (ø)
tests/stress.rs 93.96% <100.00%> (+0.10%) :arrow_up:
... and 3 more