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