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");
}
  1. 在一个async方法中, 可以执行其他异步任务. 但如果需要顺序执行这些异步任务时, 就需要在上一个任务的后面,执行await方法.
  2. 如果想实现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相关推荐

  1. [C#] 谈谈异步编程async await

    [C#] 谈谈异步编程async await 转载于:https://www.cnblogs.com/macT/p/9288112.html

  2. async js 返回值_JS异步编程 | Async / Await / Generator 实现原理解析

    async/await实现 在多个回调依赖的场景中,尽管Promise通过链式调用取代了回调嵌套,但过多的链式调用可读性仍然不佳,流程控制也不方便,ES7 提出的async 函数,终于让 JS 对于异 ...

  3. Swift之深入解析异步函数async/await的使用与运行机制

    一.async/await 在 WWDC21 中 Swift 盼来了 async/await,作为现代编程语言的标志之一,async/await 可以让我们像编写常规代码一样,轻松地编写异步代码,这样 ...

  4. ES2017 异步函数async/await

    ES2017标准已于2017年6月份正式定稿了,并广泛支持最新的特性:异步函数.如果你曾经被异步 JavaScript 的逻辑困扰,这么新函数正是为你设计的. 异步函数或多或少会让你编写一些顺序的 J ...

  5. js异步函数(async/await)

    1.概念 异步函数也称为"asynac/await"(语法关键字),是ES6期约模式在ECMAScript函数中的应用.async/await是ES8新增的.这个特性让以同步方式写 ...

  6. Python异步编程Async/Await

    python 从3.5开始从语言层面提供了新的异步编程语法. import asyncioasync def hello():print("hello the world")r = ...

  7. 前端异步请求async/await,axios的错误用法

    request为包装后的axios请求 1.直接return请求,得到promise,获取不到返回值, const tmp = async () => {return request({meth ...

  8. Python 异步 IO 、协程、asyncio、async/await、aiohttp

    From :廖雪峰 异步IO :https://www.liaoxuefeng.com/wiki/1016959663602400/1017959540289152 Python Async/Awai ...

  9. Python 异步 async/await(进阶详解)

    文章目录 CPU的时间观 I/O(异步的瓶颈) 基础概念 进程/线程 阻塞/非阻塞 并发/并行 CPU调度策略 同步/异步 事件循环+回调 协程(异步) async/await asyncio事件循环 ...

最新文章

  1. 从哲学角度分析,框架的[无用之用]效果
  2. spring boot学习资料以及DEMO项目
  3. 微信公众号开发(python+werobot)-自动回复
  4. mysql运维管理-mysqldump 备份与恢复数据库20
  5. Math.round(),Math.ceil(),Math.floor()的区别
  6. 做中学之教与学工具箱
  7. 精准设计类素材方向,搜索把握细节
  8. windows 根据父进程pid查找所有子进程id(C++)
  9. 猫都能学会的Unity3D Shader入门指南(一)
  10. Android开发环境的安装与配置(两种方法)
  11. 2017cad光标大小怎么调_2017版CAD画直线时怎么设置光标处有显示长度和角度的?...
  12. wordpress目录文件结构
  13. 《洛神赋》髣髴兮若轻云之蔽月,飘飖兮若流风之回雪
  14. java 全双工串口,Java实现全双工串口通信
  15. 汶川大地震引起最近全国人民心理一定程度的恐慌问题
  16. hive:函数:自定义函数(笔记)
  17. 详解:分治算法【Java实现】——汉诺塔问题
  18. 魅族的云相册能克隆到华为手机吗_魅族云服务如何导出导入 换手机flyme云导出相册...
  19. 微信小程序setData视图不更新的问题
  20. 10+编程语言实现云笔记

热门文章

  1. python统计词频_python统计词频
  2. 一道关于String的易错习题
  3. CSS深入浅出(三)
  4. 记Bugly崩溃查找过程unity-il2cpp
  5. 从虚幻4动画系统与控制器交互理解数据驱动(一)古老的写法
  6. SQL Server SQL高级查询语句小结(转)
  7. 技术公开课:SQL Server 索引优化原则与工具
  8. 【转载】移植FFMpeg到VC环境心得
  9. 第3章 用户(账户)管理
  10. [转载]关于webbrowser,innet,xmlhttp获取网页源码的比较!