1 个不稳定版本
0.4.0 | 2021年9月16日 |
---|
#900 in 并发
14KB
199 行
Consumable_Vec —
Consumable_Vec 是为多个生产者和消费者创建互享数据库的通用方法
概念
该软件包提供了一个用于数据消费的 trait 以及共享和非共享可消费向量的实现。在两种情况下,思想是生产者可以在任何时间向向量添加数据。当这些数据被消费时,它们将从数据池中删除。在非共享实现中,调用者必须负责数据的所有权,以允许对其进行可变访问。在共享实现中,每个用户都会得到一个可消费向量的 Clone,以添加或消费数据。
use consumable_vec::{SharedConsumableVec, Consumable};
use std::thread;
int main() {
let con_vec = SharedConsumableVec::default();
let producer = con_vec.clone();
let consumer = con_vec.clone();
thread::spawn(move || {
for n in 1..100 {
producer.add(format!("Produced: {}", n));
}
});
thread::spawn(move || {
loop {
if let Some(consumed) = consumer.consume("Produced".to_string()) {
println!("{:?}", consumed);
if consumed.inner().iter().filter(|c| c.contains("99")).count() > 0 {
break;
}
}
}
});
}
在 examples
文件夹中,您可以找到一个关于如何在线程间使用 SharedConsumableVec
的简短示例。
要运行示例
cargo run --example shared_vec
许可
受MIT 许可许可
除非您明确说明,否则您提交给 Consumable_Vec 的任何有意贡献都将按上述方式许可,不附加任何额外条款或条件。
依赖
~38KB