3 releases (1 stable)

1.0.0 Jul 19, 2020
0.1.1 Jul 19, 2020
0.1.0 Jul 19, 2020

#744 in Concurrency

MIT license

11KB
181 lines

"Write-rarely-read-many" wrapper.

This lock-free container is suitable in situations where you perform a lot of reads to a T, but only rarely modify that T.

From a logic point of view, it is more or less the equivalent of an RwLock, except that:

  • It works in no_std platforms.
  • Reading the T always takes the same time and will never wait for a lock to be released.
  • Writing the T is done in a compare-and-swap way, and updates might have to be performed multiple times.

See the documentation of the Wrrm.

Example

let val = wrrm::Wrrm::from(5);
assert_eq!(*val.access(), 5);

val.modify_with(|v| *v += 1);
assert_eq!(*val.access(), 6);

Dependencies

~23KB