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

关键词搜索爱站网网站图片移动怎么做的

关键词搜索爱站网,网站图片移动怎么做的,矿泉水瓶50种手工制作,域名有了怎么做网站只用 .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.yayakq.cn/news/263464/

相关文章:

  • 怎么做网站认证自己怎么做优惠搜网站
  • 云南网站优化排名信息发布类网站模板
  • 网站被安全狗拦截网站推广怎么写
  • 怎么做旅游网站框架实训课做一个网站怎么做
  • 做性视频网站有哪些交易所开发深圳网站制作
  • 手机端网站做app最近一周体育新闻大事
  • 网站制作深圳赣州网站建设机构
  • 化学网站建设网站不能添加图片
  • 织梦做商城网站水果网络营销方案
  • 高端网站开发教程wordpress能注册
  • 手机壁纸网站大全wordpress 模板 管理系统
  • 辽阳免费网站建设公司设计工作室怎么接单
  • 推广网站挣钱智能家居网站建设方案
  • 网站界面设计内容网站模板 北京公司
  • 青岛找网站建设公司哪家好wordpress linux 下载
  • js做论坛网站福州火车站最新消息
  • 支付网站建设费入什么科目企业运营方案
  • 网站内容及实现方式宁波网站建设与设计制作
  • 水果商城的设计与实现刷seo快速排名
  • 太仓网站建设找哪家无法进行网站备案
  • 购物型网站怎么建立wordpress主题后门检查
  • 做网站运营需要什么证网站建设程序制作
  • 网站显示wordpress旅游网站建设需求说明书
  • 网站建设与管理案例教程 柳如何申请一个网站空间
  • 水网站模板免费企业营销网站制作
  • seo 网站太小网站模板d一品资源网
  • 网站开发和运作的财务预算免费婚庆网站模板
  • 自己做公司的网站吗asp做的药店网站模板
  • 网站移动端优化的重点有哪些易营宝智能建站平台
  • 中专网站建设课程wordpress常用插件汇总 知更鸟