#sync #reference-counting #arc #data-structures #weak-references

no-std parc

Rust 库用于在异步/await 中实现可取消的时间合约

2 个稳定版本

1.0.1 2019 年 11 月 8 日
1.0.0 2019 年 11 月 5 日

⚠️ 报告问题

#21#datastructure


rustracts 中使用

MIT 许可证

21KB
309

parc 最新版本 Rust 文档

此包公开了 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();
	}
}

无运行时依赖

功能