2 个稳定版本
1.0.1 | 2019 年 11 月 8 日 |
---|---|
1.0.0 | 2019 年 11 月 5 日 |
#21 在 #datastructure
在 rustracts 中使用
21KB
309 行
parc
此包公开了 ParentArc<T>
,它与 Arc<T>
相似,但无法克隆“强”引用。这允许 ParentArc<T>
锁定其弱引用,并在所有强引用释放后阻塞。一旦它是唯一的引用,就可以安全地消耗。
使用方法
此包与提供分配器的 #![no_std]
环境兼容。
[dependencies]
parc = {version="1", default-features=false} # for no_std
示例
use parc::ParentArc;
use std::thread;
use std::sync;
fn main() {
let m = ParentArc::new(sync::Mutex::new(0));
let mut vh = Vec::new();
for _ in 0..10 {
let h = thread::spawn({
let weak = ParentArc::downgrade(&m);
move || loop {
match weak.upgrade() {
Some(mutex) => *mutex.lock().unwrap() += 1,
None => break,
}
}
});
vh.push(h);
}
let _: sync::Mutex<usize> = m.block_into_inner();
for h in vh {
let _ = h.join();
}
}