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

关于 Rust 异步底层实现中 waker 的猜测

这是一个求助文章。

我肤浅地学习了 Rust 异步底层实现原理,关于 Future、waker 和运行时等。关于 waker 我有三点猜测:

  1. waker 是由实现执行器的人提供的
  2. 在执行器中会调用 epoll_wait,epoll 返回 fd,执行器找到对应的 waker,调用 wake() 通知任务继续
  3. 最底层的 future 是人工实现的,而不是编译器生成的,future 内部调用 cx.waker() 获取 waker,在任务无法继续执行时,把 waker 注册到特定运行时的注册表中,与 fd 关联。调用 epoll_ctl 注册 fd。

我想知道既然 Future 要把 waker 注册给运行时,使得运行时知道这个 waker 是与某个 fd 关联的。那么实现这个 Future 的 poll 方法时,就应该知道这个 Future 将来会被哪个运行时调用,从而知道怎么给这个运行时注册 waker。但真的是这样吗,这样岂不就决定了这个 Future 不能被其他运行时调用了?或者说 Rust 生态中,你要实现一个异步库,就必须得选定一个运行时,干脆用运行时提供的底层 Future,自己只是实现一些上层的应用逻辑?

http://www.lryc.cn/news/614175.html

相关文章:

  • #C语言——刷题攻略:牛客编程入门训练(六):运算(三)-- 涉及 辗转相除法求最大公约数
  • GPT OSS 双模型上线,百度百舸全面支持快速部署
  • 创建MyBatis-Plus版的后端查询项目
  • SQL Server 2019搭建AlwaysOn高可用集群
  • 模块 PCB 技术在未来通信领域的创新突破方向
  • Cisco 2018-2023年度互联网报告深度解析:数字化转型时代的网络发展趋势与战略洞察
  • kafka 为什么需要分区?分区的引入带来了哪些好处
  • SpringMVC(四)
  • 前后端日期交互方案|前端要传时间戳还是字符串?后端接收时是用Long还是Date还是String?
  • 机器学习 SVM支持向量机
  • 虚幻基础:场景actor与角色的碰撞
  • (0️⃣基础)程序控制语句(初学者)(第3天)
  • Javase-异常
  • Idea配置——build system的选项区别
  • SpringBoot激活指定profile的方式
  • 灰狼算法+四模型对比!GWO-CNN-LSTM-Attention系列四模型多变量时序预测
  • 《汇编语言:基于X86处理器》第12章 浮点数处理与指令编码(2)
  • 准确----SFTP新增用户
  • 三步完成,A100本地vLLM部署gpt-oss,并启动远程可访问api
  • 串口转以太网实战:S7-200驱动大棚温湿度监控、HMI与通风设备
  • Vue框架进阶
  • FPGA实现Aurora 64B66B数据回环传输,基于GTX高速收发器,提供2套工程源码和技术支持
  • 机器学习支持向量机(SVM)
  • 论文精读(二)| 开源软件漏洞感知技术综述
  • 深度学习·MAFT
  • Linux中的内核同步源码相关总结
  • 2025华数杯数学建模A题【 多孔膜光反射性能的优化与控制】原创论文分享
  • 提升LLM服务效率的秘密武器——vLLM!
  • 【MongoDB学习笔记2】MongoDB的索引介绍
  • [GESP202309 五级] 2023年9月GESP C++五级上机题题解,附带讲解视频!