我有一个像这样的简单代码来模拟异步代码如何在阻塞操作上工作。
我希望所有这些“Hello”打印将在 1000 毫秒后显示。
但是这段代码就像一个普通的阻塞代码一样工作,每个 hello_wait 调用等待 1000 毫秒并在 1000 毫秒后打印另一个 Hello。
我怎样才能让它同时运行?
use std::{time::Duration};
use async_std::task;
async fn hello_wait(){
task::sleep(Duration::from_millis(1000)).await;
println!("Hello");
}
#[async_std::main]
async fn main() {
hello_wait().await;
hello_wait().await;
hello_wait().await;
hello_wait().await;
hello_wait().await;
}
这是正在发生的事情:
// -- Wait 1000ms --
Hello
// -- Wait 1000ms --
Hello
// -- Wait 1000ms --
Hello
// -- Wait 1000ms --
Hello
// -- Wait 1000ms --
Hello
这就是我想要的:
// -- Wait 1000ms --
Hello
Hello
Hello
Hello
Hello