Skip to content

RCU (Read-Copy-Update) implementation in rust for platforms supporting atomic 128-bit operations.

License

Notifications You must be signed in to change notification settings

cyborg42/rcu_128

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rcu128

Rcu128 is a Rust library that provides a concurrent data structure for read-copy-update (RCU) style access to a value. It allows multiple readers to access the value concurrently while ensuring safe updates by blocking the release of the value until all current readers have finished reading the old value.

Limitation

Only available on platforms that support atomic loads and stores of u128.

Usage

Add to your Cargo.toml

[dependencies]
rcu_128 = { git = "https://github.com/cyborg42/rcu_128.git" }

Example

use rcu_128::RcuCell;

fn main() {
    let rcu_cell = RcuCell::new(42);

    // Read the value
    {
        let guard = rcu_cell.read();
        assert_eq!(*guard, 42);
    }

    // Write a new value
    rcu_cell.write(100);

    // Upate with a function
    rcu_cell.update(|value| value + 1);

    // Read the updated value
    {
        let guard = rcu_cell.read();
        assert_eq!(*guard, 101);
    }
}

License

This project is licensed under the MIT License. See the LICENCE file for details.

About

RCU (Read-Copy-Update) implementation in rust for platforms supporting atomic 128-bit operations.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages