当前位置: 首页 > news >正文

公关策划公司网站源码jsurl转码

公关策划公司网站源码,jsurl转码,全国企业信用信息公示系统云南,网站设计师绩效只用 .await 来执行future,会阻塞并发任务,直到特定的 Future 完成 join!:等待所有future完成 可事实上为什么都是res1完成后再执行res2? join! 不保证并发执行,难道只负责同步等待? 示例 [package] name = "rust_demo5" version = "0.1.0" edit…

只用 .await 来执行future,会阻塞并发任务,直到特定的 Future 完成

join!:等待所有future完成

可事实上为什么都是res1完成后再执行res2?
join! 不保证并发执行,难道只负责同步等待?

示例

[package]
name = "rust_demo5"
version = "0.1.0"
edition = "2021"[dependencies]
futures = "0.3"
tokio = { version = "1.16.0", features = ["full"] }
tokio-stream = "0.1.14"
use futures::executor::block_on;
use std::thread::sleep;
use std::thread;
use std::time::Duration;
use futures::{future, join};async fn task_one() {println!("task_one: begin");thread::sleep(Duration::from_secs(4));println!("task_one: finish");
}async fn task_two() {println!("task_two: begin");thread::sleep(Duration::from_secs(2));println!("task_two: finish");
}#[tokio::main]
async fn main() {let (res1, res2) = join!(task_one(), task_two());// 在这里调用 res1 和 res2,它们分别对应异步任务1和异步任务2的输出结果// 先执行完task_one,再执行完task_two,然后再返回
}
use futures::executor::block_on;
use std::thread;
use futures::{future, join};async fn task_one() {println!("task_one: begin");for i in 1..=10_000_000 {if i % 100_000 == 0 {println!("task_one,  found a number: {}", i);}}println!("task_one: finish");
}async fn task_two() {println!("task_two: begin");for i in 1..=10_000_000 {if i % 100_000 == 0 {println!("task_two,  found a number: {}", i);}}println!("task_two: finish");
}#[tokio::main]
async fn main() {let (res1, res2) = join!(task_one(), task_two());// 在这里调用 res1 和 res2,它们分别对应异步任务1和异步任务2的输出结果
}

反例

不必在 get_book 完成后再 get_music

async fn get_book_and_music() -> (Book, Music) {let book = get_book().await;let music = get_music().await;(book, music)
}

try_join

返回 Result 的 future,考虑使用 try_join! 而非 join
join 只会在所有子 future 都完成后才会完成,它甚至会在子 future 返回 Err 之后继续处理
try_join! 会在其中的子future返回错误后立即完成

use futures::try_join;async fn get_book() -> Result<Book, String> { /* ... */ Ok(Book) }
async fn get_music() -> Result<Music, String> { /* ... */ Ok(Music) }async fn get_book_and_music() -> Result<(Book, Music), String> {let book_fut = get_book();let music_fut = get_music();try_join!(book_fut, music_fut)
}

传进 try_join! 的 future 必须要用相同的错误类型。
考虑使用 futures::future::TryFutureExt 库的 .map_err(|e| …) 或 err_into() 函数来统一错误类型:

use futures::{future::TryFutureExt,try_join,
};// Result 类型用于更好地处理和组织错误情况,并在避免出现非预期错误时提供便捷// 一种是一个内部类型为 Book 的成功结果,另一个是一个无内部类型 () 的错误结果
async fn 
http://www.hkea.cn/news/956091/

相关文章:

  • 电子元器件商城网站建设百度开户怎么开
  • 企业网站开发基本流程百度博客收录提交入口
  • 甘特图模板关于网站建设微信营销模式
  • 网站建设的swot分析长尾关键词挖掘精灵
  • 发布自己的做家教的网站网店运营推广登录入口
  • b s网站系统如何做性能测试百度推广运营怎么做
  • 洛阳seo外包公司费用seo的中文意思
  • 政府网站建设遵循的原则seo网站内容优化
  • java做网站具体步骤邵阳seo优化
  • 自己做的网站如何放进服务器今天今日头条新闻
  • 男装网站的网站建设背景惠州seo按天计费
  • 如何快速提高网站排名互联网项目推广
  • icp备案网站名称更改成都网站设计
  • 企业网站建设需求分析seo排名资源
  • python基础教程雪峰东莞搜索seo网站关键词优化
  • b2b网站开发供应商小程序开发教程全集免费
  • 用自己的手机做网站外链网站是什么
  • 市场调研公司介绍网站推广优化公司
  • 玉溪人民政府网站建设现状新网站seo
  • 湖南餐饮网站建设2023北京封控了
  • 重庆网站设计人员外贸网站搭建推广
  • 局域网内的网站建设西安网站建设公司排名
  • 普通网站报价多少中南建设集团有限公司
  • 蚌埠做网站哪家好全网营销国际系统
  • 沈阳市网站制作谷歌香港google搜索引擎入口
  • 做美食网站的背景高端网站建设制作
  • 文件什么上传到wordpress泉州seo技术
  • 网站地址地图怎么做网页制作的软件有哪些
  • 如何用万网建设网站口碑营销策划方案
  • 做网站的基础架构东莞seo建站公司