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

rust徒手编写模拟tokio异步运行时

能够使用一种语言徒手编写线程池或者异步运行时,可以代表你对语言语法的和语义的理解已经达到一定的高度了,证明你在不熟悉任何三方框架的情况下,对语言本身的已经达到融会贯通的程度了。

用rust语言写线程池的代码很简单,但是要写一个性能可以媲美tokio的异步运行时的话,还是需要一些思考的。

  1. tokio有一个可以在任何地方都可以运行的spawn函数。所以需要造一个全局运行时MiniTokioRuntime。
  2. tokio的spawn函数返回一个JoinHandle可以获得异步运行结果,它内部使用的是raw指针转换。我们尝试一种新的方法,使用一种通用的类型AsyncResult。
  3. 运行时需要两个管道。一个用来输送spawn的执行结果。另一个用来输送唤醒的任务。
  4. tokio有任务窃取机制,我们为了简化任务窃取机制,使用crossbeam_channel可以简化任务窃取部分的开发。如果后续希望任务窃取部分性能更好,可以后续自行编写。但眼下使用crossbeam_channel的性能已经可以比肩tokio了。
  5. tokio是有多线程版本和单线程版本的。我们为了学习,所以只做多线程版本。
  6. tokio的多线程版本的core线程数量是固定的,虽然有函数spawn_blocking可以在线程全部都繁忙的情况下,临时创建线程来执行async fn。这块我们是为了学习tokio的主要运行逻辑,所以这块我们不再做。
  7. tokio有很多自定义继承了Future的类,我们为了学习只做一个Sleep即可。
  8. 异步运行时肯定要使用很多很多的锁,为了性能更好,我们选择使用parking_lot。
http://www.dtcms.com/a/418253.html

相关文章:

  • 【mdBook】4.5 test 命令
  • 在网站后台备案号怎么改商城网站建设视频教程
  • 漏洞修复 CentOS x86_64 OpenSSH 升级操作文档
  • HarmonyOS 地图手势操作全解析
  • 生态碳汇涡度相关监测与通量数据分析
  • Android-kotlin MVVM框架搭建+Retrofit二次封装
  • QML学习笔记(十八)QML的信号处理器的Connections写法
  • Spring Cloud Gateway 实战:全局过滤器日志统计与 Prometheus + Grafana 接口耗时监控
  • CTFHub RCE通关笔记7:命令注入 过滤cat(9种渗透方法)
  • Kotlin Value Class 全面解析:类型安全与零开销封装
  • 【Android】kotlin.flow简介
  • 如何在电脑上编辑三星联系人
  • Java开发环境搭建之 9.使用Docker Compose 安装部署RabbitMQ
  • 智能家居:从设备互联到智慧感知的技术演进
  • 做网站是个什么行业网站设计示例
  • D018 vue+django 旅游图谱推荐问答系统|neo4j数据库|智能问答
  • 11. Jmeter性能与优化
  • 水脉织城・文脉映画:泰州城市旅游宣传片的专业化叙事路径
  • QT文件解析与乱码问题
  • 医疗编程AI技能树与培训技能树报告(国内外一流大学医疗AI相关专业分析2025版,下)
  • seo网站快速排名企业域名怎么填写
  • 谈谈数学和式的理解和应用
  • 【Linux指令 (一)】Linux 命令行入门:从零开始理解Linux系统理论核心概念与基础指令
  • 网站建设案例赏析网站制作比较好的制作公司
  • 线上JVM问题定位常用命令
  • 通过配置 GitLab 自动触发项目自动化构建与部署
  • 【qml-12】Quick3D实现机器人鼠标拖拽转换视角(无限角度)与滚轮缩放
  • h5实现一个吸附在键盘上的工具栏
  • 解决 sqlplus / as sysdba 登录缓慢问题
  • Mysql DBA学习笔记(主从复制)