mirror of https://github.com/KaiserY/trpl-zh-cn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
1012 B
41 lines
1012 B
extern crate trpl; // required for mdbook test
|
|
|
|
use std::{thread, time::Duration};
|
|
|
|
fn main() {
|
|
trpl::run(async {
|
|
// ANCHOR: yields
|
|
let a = async {
|
|
println!("'a' started.");
|
|
slow("a", 30);
|
|
trpl::yield_now().await;
|
|
slow("a", 10);
|
|
trpl::yield_now().await;
|
|
slow("a", 20);
|
|
trpl::yield_now().await;
|
|
println!("'a' finished.");
|
|
};
|
|
|
|
let b = async {
|
|
println!("'b' started.");
|
|
slow("b", 75);
|
|
trpl::yield_now().await;
|
|
slow("b", 10);
|
|
trpl::yield_now().await;
|
|
slow("b", 15);
|
|
trpl::yield_now().await;
|
|
slow("b", 350);
|
|
trpl::yield_now().await;
|
|
println!("'b' finished.");
|
|
};
|
|
// ANCHOR_END: yields
|
|
|
|
trpl::race(a, b).await;
|
|
});
|
|
}
|
|
|
|
fn slow(name: &str, ms: u64) {
|
|
thread::sleep(Duration::from_millis(ms));
|
|
println!("'{name}' ran for {ms}ms");
|
|
}
|