当前位置: 首页 > 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。

http://www.xdnf.cn/news/996103.html

相关文章:

  • nginx配置gzip压缩
  • 《深入理解Apache Dubbo 与实战》笔记
  • SpreadJS 中 HTML Canvas 的性能优势深度解析
  • Flask 中结合 Jinja2 模板引擎返回渲染后的 HTML
  • 关于 /proc/net/tcp 与 /proc/$pid/net/tcp 的关系分析
  • python中的循环结构
  • 多参表达式Hive UDF
  • 如何确定某个路由器的路由表?(计算机网络)
  • Flink读取Kafka写入Paimon
  • C++11中char16_t和char32_t的入门到精通
  • 黑马点评面试话术
  • uniapp 时钟
  • 电动汽车驱动模式扭矩控制设计方法
  • 三、DevEco Studio安装和HelloWorld应用
  • Kubernetes 集群安全(身份认证机制、SecurityContext、Network Policy网络策略、预防配置泄露、全面加固集群安全)
  • Springboot仿抖音app开发之消息业务模块后端复盘及相关业务知识总结
  • C++核心编程(动态类型转换,STL,Lanmda)
  • 【EdgeAI实战】(3)边缘AI开发套件 STM32N6570X0 用户手册
  • 【递归、搜索与回溯算法】概括
  • Vue + Vite 项目部署 Docker 全攻略:原理、路由机制、问题排查与开发代理解析
  • 使用 PyTorch 和 SwanLab 实时可视化模型训练
  • Python使用总结之Linux部署python3环境
  • 【测试开发】数据类型篇-列表推导式和字典推导式
  • Vue3+TypeScript实现责任链模式
  • XML 注入与修复
  • 接口测试不再难:智能体自动生成 Postman 集合
  • Apache 反向代理Unity服务器
  • Golang启用.exe文件无法正常运行
  • NGINX 四层 SSL/TLS 支持ngx_stream_ssl_module
  • vue3集成高德地图绘制轨迹地图