#barrier #spin-lock #sense

barriers

A barrier spin lock implementation

2 unstable releases

0.2.0 May 1, 2021
0.1.0 May 1, 2021

#769 in Concurrency

Custom license

4KB
56 lines

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();

No runtime deps