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]); });
}
rust异步之async、await、future相关推荐
- [C#] 谈谈异步编程async await
[C#] 谈谈异步编程async await 转载于:https://www.cnblogs.com/macT/p/9288112.html
- async js 返回值_JS异步编程 | Async / Await / Generator 实现原理解析
async/await实现 在多个回调依赖的场景中,尽管Promise通过链式调用取代了回调嵌套,但过多的链式调用可读性仍然不佳,流程控制也不方便,ES7 提出的async 函数,终于让 JS 对于异 ...
- Swift之深入解析异步函数async/await的使用与运行机制
一.async/await 在 WWDC21 中 Swift 盼来了 async/await,作为现代编程语言的标志之一,async/await 可以让我们像编写常规代码一样,轻松地编写异步代码,这样 ...
- ES2017 异步函数async/await
ES2017标准已于2017年6月份正式定稿了,并广泛支持最新的特性:异步函数.如果你曾经被异步 JavaScript 的逻辑困扰,这么新函数正是为你设计的. 异步函数或多或少会让你编写一些顺序的 J ...
- js异步函数(async/await)
1.概念 异步函数也称为"asynac/await"(语法关键字),是ES6期约模式在ECMAScript函数中的应用.async/await是ES8新增的.这个特性让以同步方式写 ...
- Python异步编程Async/Await
python 从3.5开始从语言层面提供了新的异步编程语法. import asyncioasync def hello():print("hello the world")r = ...
- 前端异步请求async/await,axios的错误用法
request为包装后的axios请求 1.直接return请求,得到promise,获取不到返回值, const tmp = async () => {return request({meth ...
- Python 异步 IO 、协程、asyncio、async/await、aiohttp
From :廖雪峰 异步IO :https://www.liaoxuefeng.com/wiki/1016959663602400/1017959540289152 Python Async/Awai ...
- Python 异步 async/await(进阶详解)
文章目录 CPU的时间观 I/O(异步的瓶颈) 基础概念 进程/线程 阻塞/非阻塞 并发/并行 CPU调度策略 同步/异步 事件循环+回调 协程(异步) async/await asyncio事件循环 ...
最新文章
- 从哲学角度分析,框架的[无用之用]效果
- spring boot学习资料以及DEMO项目
- 微信公众号开发(python+werobot)-自动回复
- mysql运维管理-mysqldump 备份与恢复数据库20
- Math.round(),Math.ceil(),Math.floor()的区别
- 做中学之教与学工具箱
- 精准设计类素材方向,搜索把握细节
- windows 根据父进程pid查找所有子进程id(C++)
- 猫都能学会的Unity3D Shader入门指南(一)
- Android开发环境的安装与配置(两种方法)
- 2017cad光标大小怎么调_2017版CAD画直线时怎么设置光标处有显示长度和角度的?...
- wordpress目录文件结构
- 《洛神赋》髣髴兮若轻云之蔽月,飘飖兮若流风之回雪
- java 全双工串口,Java实现全双工串口通信
- 汶川大地震引起最近全国人民心理一定程度的恐慌问题
- hive:函数:自定义函数(笔记)
- 详解:分治算法【Java实现】——汉诺塔问题
- 魅族的云相册能克隆到华为手机吗_魅族云服务如何导出导入 换手机flyme云导出相册...
- 微信小程序setData视图不更新的问题
- 10+编程语言实现云笔记