#barrier #spin-lock #sense

barriers

一个屏障自旋锁实现

2 个不稳定版本

0.2.0 2021年5月1日
0.1.0 2021年5月1日

#769 in 并发

自定义许可证

4KB
56

Rust 障碍

Rust 中的屏障自旋锁实现!

安装

只需将以下内容添加到您的 Cargo.toml 依赖项中。

barriers = "<version number>"

用法

在使用之前必须先初始化一个屏障。可以通过使用 init 方法并指定计数来创建一个新的屏障。这个屏障是一个简单的计数屏障,它在 sense 变量上自旋。

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

由于屏障通常在线程之间共享,因此使用 Arc

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

并在将其移动到新线程之前对其进行克隆是一个好主意

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

要选择一个同步点,只需调用 arrive 方法。

barr_clone.arrive();

无运行时依赖