Skip to content

Xudong-Huang/rcu_cell

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build Status Current Crates.io Version Document

RcuCell

A lockless rcu cell implementation that can be used safely in multithread context.

Features

  • Support multi-thread read and write operations.
  • The read operation would not block other read operations.
  • The read operation is always waitless.
  • The read operation is something like Arc::clone.
  • The write operation would not block other read operations.
  • The write operation is lockless.
  • The write operation is something like Atomic Swap.
  • The RcuCell could contain no data
  • Could be compiled with no_std

Usage

    use rcu_cell::RcuCell;
    use std::sync::Arc;

    let t = Arc::new(RcuCell::new(10));
    let t1 = t.clone();
    let t2 = t.clone();
    let d1 = t1.take().unwrap();
    assert_eq!(*d1, 10);
    assert_eq!(t1.read(), None);
    let d2 = t2.write(42);
    assert!(d2.is_none());
    let d3 = t2.read().unwrap();
    assert_eq!(*d3, 42);

About

rust rcu cell library

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages