rust 阻止Futures集合

eulz3vhy  于 2023-05-07  发布在  其他
关注(0)|答案(1)|浏览(107)

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_onefuture_two尚未完成其执行也会被打印。
有没有一种方法可以阻止Future的收集,以便在所有Future都被驱动完成之后,控制权才被交还给调用者?

unftdfkk

unftdfkk1#

很简单只在try_join_all()上阻塞。例如,使用tokio

tokio::runtime::Handle::current().block_on(future::try_join_all(futures));

相关问题