2 unstable releases
0.2.0 | May 1, 2021 |
---|---|
0.1.0 | May 1, 2021 |
#871 in Concurrency
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();