阻塞 Futures 集合

问题描述 投票:0回答:1

future::try_join_all
是对
Future
集合的非阻塞调用,这样执行程序就会驱动所有
Future
完成。因为它是非阻塞的,所以它让步,然后调用者执行下一行代码。

例如在伪代码中

use future;

[... some fn main etc.]
let futures: Vec<_> = vec![future_one, future_two];
future::try_join_all(futures).await?;
println!("Hello");
即使

"Hello"

future_one
 还没有完成它的执行,
future_two
也会被打印出来。

有没有一种方法可以阻止 Futures 的收集,以便在所有 futures 都完成后才将控制权交还给调用者?

asynchronous rust future
1个回答
0
投票

这很简单:只需阻止

try_join_all()
。例如,与
tokio

tokio::runtime::Handle::current().block_on(future::try_join_all(futures));
© www.soinside.com 2019 - 2024. All rights reserved.