当前位置: 首页 > 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.dtcms.com/a/321574.html

相关文章:

  • Xiphos 配备 GTH 计算机模块的 Q8J 低 SWaP
  • 基于LLM的Chat应用测试方法探索:系统化评估与持续优化
  • python之注册机制总结
  • 等保测评-Nginx中间件
  • 强光干扰下误报率↓82%!陌讯多模态融合算法在高空抛物检测的实战优化
  • 微软发布Project Ire项目:可自主检测恶意软件的人工智能系统
  • docker下载安装和使用(Hyper-V方式)
  • 信息系统项目范围管理高频题库精讲
  • windows拉取镜像失败
  • 双驱智造革命:物理方程+工业数据训练,突破增材制造温度场预测瓶颈
  • CETOL 6σ 帮助提升活检器械精度并降低制造成本
  • Horse3D引擎研发记录(二):基于QtOpenGL使用仿Three.js的BufferAttribute结构重构三角形绘制
  • 复数的复平面加减乘除运算与在极坐标中的运算对应关系
  • 算法训练之栈
  • provide 和 inject 最佳实践
  • 多任务实时进度监控系统:基于ABP vNext与SignalR的架构实践
  • [激光原理与应用-175]:测量仪器 - 频谱型 - 拉曼光谱仪的工作原理、内部组成、核心芯片、核心算法
  • 项目一系列-第3章 若依框架入门
  • Java中的方法引用操作符(::)详解与实战应用
  • “A flash of inspiration“, protect us from prompt injection?
  • 实习的收获
  • 【Jmeter】设置线程组运行顺序的方法
  • 安装部署K8S集群环境(实测有效版本)
  • 复杂姿态漏检率↓79%!陌讯多模态算法在安全带穿戴识别的落地实践
  • Node.js Turbo 包入门教程
  • web端-登录页面验证码的实现(springboot+vue前后端分离)超详细
  • (Arxiv-2025) CINEMA:通过基于MLLM的引导实现多主体一致性视频生成
  • 基于Jeecgboot3.8.1的flowable流程审批人与发起人相同设置-前端部分
  • Vue2与Vue3 Hooks对比:写法差异与演进思考
  • 【3d61638 渍韵】001 png pdf odt 5与明天各种号(虚拟文章スミレ数据)