1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > rust异步之async await future

rust异步之async await future

时间:2018-12-23 12:24:54

相关推荐

rust异步之async await future

1. 简单的异步async

The most common way to run a Future is to .await it. When .await is called on a Future, it will attempt to run it to completion.

执行 Future的最简单方法就是调用 await

use futures::executor::block_on;async fn say_hi() {println!("nice");}fn main() {let future = say_hi();// block the current thread until provided futureblock_on(future);}

使用async来修饰一个方法, 表示此方法是一个异步任务, 然后在主线程里使用一个执行器宏block_on来等待运行结果

2. 关键字await

async fn lear_song() {println!("learn song");}async fn sing_song() {println!("sing song");}async fn dance() {println!("learn dance");}async fn learn_and_sing() {// study song, and waitlet song = lear_song().await;// then sing songsing_song().await;}async fn async_main(){let f1 = learn_and_sing();let f2 = dance();futures::join!(f1,f2);}fn main() {block_on(async_main());println!("done");}

在一个async方法中, 可以执行其他异步任务. 但如果需要顺序执行这些异步任务时, 就需要在上一个任务的后面,执行await方法.如果想实现barrier类似的效果, 可以通过futures::join方法来实现.

3.futures

使用futures实现并发

use futures::executor::block_on;use futures::future::join_all;async fn foo(i: u32) -> u32 {10 + i }fn main() {block_on(async {let futures = vec![foo(1), foo(2), foo(3)];assert_eq!(join_all(futures).await, [11, 12, 13]); });}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。
相关阅读
异步(async await)

异步(async await)

2023-08-09

async await异步

async await异步

2019-02-19

Async/Await异步

Async/Await异步

2022-01-23

异步函数(async/await)

异步函数(async/await)

2019-10-28