barriers

Crates.iobarriers
lib.rsbarriers
version0.2.0
sourcesrc
created_at2021-05-01 20:37:20.967762
updated_at2021-05-01 20:46:36.154378
descriptionA barrier spin lock implementation
homepage
repository
max_upload_size
id392013
size4,933
Scott Richardson (scottjr632)

documentation

https://github.com/scottjr632/rust-barriers

README

Rust Barriers

A barrier spin lock implementation in rust!

Installing

Just add the below to your Cargo.toml dependencies.

barriers = "<version number>"

Usage

A barrier must first be initialized before using. A new barrier can be created by using the init method and specifying the count. This barrier is a simple counting barrier that spins on a sense variable.

let barr = barrier::Barrier::init(4); // 4 is the number of threads

Since barriers are generally shared between threads, it is a good idea to use an Arc

let barr = Arc::new(barrier::Barrier::init(4));

and then clone it before moving it to a new thread

for _ in 0..4 {
    let barr_clone = Arc::clone(barr);
    thread::spawn(move || {
        barr_clone.arrive();
    });
}

To pick a synchronization point, simply call the arrive method.

barr_clone.arrive();
Commit count: 0

cargo fmt