Rustで書いて学ぶ非同期のしくみ
感想
同期処理・非同期処理の
非同期関数をjoin3をjoin3のjoin4, join5がjoin_allはjoin3~5は
Zed
Rust製エディタの
実際に書いたコードと実行結果
use std::time::Duration;
use std::time::Instant;
use futures::future;
use tokio::time::sleep;
#[tokio::main]
async fn main() {
let now = Instant::now();
let future_1 = one_sec_nya();
let future_2 = zero_five_sec_nya();
let future_3 = zero_three_sec_nya();
future::join3(
future_1,
future_2,
future_3
).await;
println!("{:?}", now.elapsed())
}
async fn one_sec_nya() {
println!("1");
sleep(
Duration::from_secs_f64(1.0)
).await;
println!("にゃー");
}
async fn zero_five_sec_nya() {
println!("0.5");
sleep(
Duration::from_secs_f64(0.5)
).await;
println!("にゃにゃー");
}
async fn zero_three_sec_nya() {
println!("0.3");
sleep(
Duration::from_secs_f64(0.3)
).await;
println!("にゃにゃにゃー");
}
実行結果。
❯ cargo run
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.05s
Running `target/debug/learn_async_rust`
1
0.5
0.3
にゃにゃにゃー
にゃにゃー
にゃー
1.005573291s

