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

Rust 学习笔记:关于通过异步实现并发的练习题

Rust 学习笔记:关于通过异步实现并发的练习题

  • Rust 学习笔记:关于通过异步实现并发的练习题
    • 问题一
    • 问题二
    • 问题三

Rust 学习笔记:关于通过异步实现并发的练习题

参考视频:

  1. https://www.bilibili.com/video/BV16JZSYxEeb

问题一

该函数的输出是什么?

async fn print_letters() {let a = async { println!("A") };let b = async { println!("B") };let c = async { println!("C") };c.await;b.await;a.await;
}

答:

C
B
A

问题二

假设有这样一个异步函数:

async fn print_letters() {let fut1 = async {print!("A");sleep().await;print!("B");};let fut2 = async {print!("C");sleep().await;print!("D");};wait_all(fut1, fut2).await;
}

wait_all(a, b) 保证 a 和 b 都执行完,但不保证公平性和初始执行顺序。

print_letters().await 可能的结果是?

A. DABC
B. ABCD
C. CADB
D. ACBD

答:B、C、D。

问题三

假设有如下异步代码:

    let (tx, mut rx) = channel(16);let recv_fut = rx.recv();let send_fut = tx.send(0);let (n, _) = join(recv_fut, send_fut).await;println!("{}", n.unwrap());

channel 是无阻塞且 bounded 的,这意味着 send 返回一个 future,当通道还有容量时该 future 会完成。并且 join(a, b) 会公平地等待其两个参数完成。

执行这段代码会发生什么?

A. 程序什么也不打印并永远循环
B. 程序打印 0 并永远循环
C. 程序打印 0 并退出
D. 程序 panic

答:C。

相关文章:

  • 《C++初阶之类和对象》【类 + 类域 + 访问限定符 + 对象的大小 + this指针】
  • DEVICENET转MODBUS TCP网关连接DeviceNet数字远程IO模块配置案例
  • uniapp小程序不支持动态组件问题
  • 更进一步深入的研究ObRegisterCallBack
  • 【iSAQB软件架构】以架构为中心的开发方法
  • node-red的http-request组件调研三方接口请求参数为form-data解决方案
  • 基于算力魔方与PP-OCRv5的OpenVINO智能文档识别方案
  • 零基础RT-thread第一节:串口通信UART
  • 基于大模型预测的上睑下垂综合诊疗技术方案
  • Java大厂面试真题:谢飞机的技术挑战
  • 每日算法刷题Day29 6.12:leetcode二分答案4道题,用时1h10min
  • 多线程安全:核心解决方案全解析
  • 商业智能中的地图可视化模板:助力数据高效呈现
  • C++ Vector深度解析:动态组的底层机制与实战指南
  • 林业资源多元监测技术守护绿水青山
  • 第 4 篇:线性回归——机器学习“开山第一斧”,用一条直线洞见AI本质
  • python 在基因研究中的应用,博德研究所:基因编辑
  • Rust入门之并发编程基础(二)
  • 智能查重防串标:筑牢烟草行业招投标诚信“防火墙”
  • ssc377d在kernel下读写寄存器
  • 电商网站开发教程/网站统计数据
  • 国外 电商网站/app推广
  • 百度网站建设费用多少知乎/昆明百度推广优化
  • 网络工程师可以从事什么工作/霸屏seo服务
  • 网站制作 武汉/seo技术培训班
  • c2c网站是什么/营销助手下载app下载