#producer-consumer #utility #generic #mutual #multiple #create #approach

consumable_vec

Consumable_Vec 是为多个生产者和消费者创建互享数据库的通用方法

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