Sam*_*nan 23 concurrency rust async-await
async
我有一个要同时执行的函数列表,然后等待所有函数完成。我现在的工作代码是:
async fn start_consumers(&self) {
for consumer in &self.consumers {
consumer.consume().await;
}
}
Run Code Online (Sandbox Code Playgroud)
这不太准确,因为函数是串行执行的。我正在寻找类似join!
, 但适用于动态向量的东西。这样我应该能够写出类似的东西:
async fn start_consumers(&self) {
let mut v = Vec::new();
for consumer in &self.consumers {
consumer.consume();
}
join!(v);
}
Run Code Online (Sandbox Code Playgroud)
目前join!
仅支持元组。我正在寻找替代方案。类似于Promise.all()
JavaScript 中的东西。
Sam*_*nan 15
futures箱具有join_all
允许等待 future 集合的功能:
use futures::future::join_all;
async fn start_consumers(&self) {
let mut v = Vec::new();
for consumer in &self.consumers {
v.push(consumer.consume());
}
join_all(v).await;
}
Run Code Online (Sandbox Code Playgroud)