Rust 异步并发框架在移动端的应用 - 陈明煜
第三届中国 Rust 开发者大会 Rust 异步并发框架在移动端的应用 陈明煜 chenmingyu4@huawei.com 华为 公共开发部 嵌入式软件能力中心 本科就读加州大学圣地亚哥分校,毕业时长两年半, Rustacean 在 华为 目前正在使用 Rust 开发并行调度框架等模块。 Rust 异步并发框架在移动端的应用 陈明煜 chenmingyu4@huawei.com Ylong Runtime 并发框架 目录 Table of Contents #2 社区并发框架介绍以及与移动端的不适配性 Introduction to third party Runtime crates and their incompatibility with mobile environment Rust 异步机制 Asynchronous Rust 异步并发框架是许多大型应用、系统具备的底层能力。 任务调度颗粒度更小,充分利用线程资源 更可控的线程数 单个任务资源占用:几十 KB -> 几百 Byte 任务切换时间 : 10 微秒 -> 100 纳秒 Rust 语言并没有提供异步并发框架, 只提供异步所需的基本特性: Future async / await Waker asyn c Future Waker poll Syntax sugar wake0 码力 | 25 页 | 1.64 MB | 1 年前3Rust 程序设计语言 简体中文版 1.85.0
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347 16. 无畏并发 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16.3. 共享状态并发 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367 16.4. 使用 Sync 与 Send Traits 的可扩展并发 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378 17.2. 并发与 async . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .0 码力 | 562 页 | 3.23 MB | 9 天前3Rust 程序设计语言简体中文版
....................................................................................... 404 16. 无畏并发 .................................................................................................. ......... 421 16.3. 共享状态并发 .............................................................................................................. 427 16.4. 使用 Sync 与 Send Traits 的可扩展并发 ....................... 赋能(empowerment):无论你现在编写的是何种代码, Rust 能让你在更为广泛的编程领域走得更远,写出自信。(这一点并不显而易见) 举例来说,那些“系统层面”的工作涉及内存管理、数据表示和并发等底层细节。从传统角度来 看,这是一个神秘的编程领域,只为浸润多年的极少数人所触及,也只有他们能避开那些臭名 昭著的陷阱。即使谨慎的实践者,亦唯恐代码出现漏洞、崩溃或损坏。 Rust 破除了这些障0 码力 | 600 页 | 12.99 MB | 1 年前3Hello 算法 1.1.0 Rust版
1‑5 拼装积木 两者的详细对应关系如表 1‑1 所示。 表 1‑1 将数据结构与算法类比为拼装积木 数据结构与算法 拼装积木 输入数据 未拼装的积木 数据结构 积木组织形式,包括形状、大小、连接方式等 算法 把积木拼成目标形态的一系列操作步骤 输出数据 积木模型 值得说明的是,数据结构与算法是独立于编程语言的。正因如此,本书得以提供基于多种编程语言的实现。 约定俗成的简称 在实际 构是计算机中组织和存储数据的 方式。 ‧ 数据结构与算法紧密相连。数据结构是算法的基石,而算法是数据结构发挥作用的舞台。 ‧ 我们可以将数据结构与算法类比为拼装积木,积木代表数据,积木的形状和连接方式等代表数据结构, 拼装积木的步骤则对应算法。 17 第 2 章 复杂度分析 Abstract 复杂度分析犹如浩瀚的算法宇宙中的时空向导。 它带领我们在时间与空间这两个维度上深入探索,寻找更优雅的解决方案。 UTF‑16 编码的字符串的长度也是 ?(1) 的操作。但是,计算 UTF‑8 编码的字符串的长度需要遍历整个字符串。 ‧ 字符串操作:在 UTF‑16 编码的字符串上,很多字符串操作(如分割、连接、插入、删除等)更容易进行。 在 UTF‑8 编码的字符串上,进行这些操作通常需要额外的计算,以确保不会产生无效的 UTF‑8 编码。 实际上,编程语言的字符编码方案设计是一个很有趣的话题,涉及许多因素。0 码力 | 388 页 | 18.50 MB | 1 年前3Hello 算法 1.2.0 简体中文 Rust 版
1‑5 拼装积木 两者的详细对应关系如表 1‑1 所示。 表 1‑1 将数据结构与算法类比为拼装积木 数据结构与算法 拼装积木 输入数据 未拼装的积木 数据结构 积木组织形式,包括形状、大小、连接方式等 算法 把积木拼成目标形态的一系列操作步骤 输出数据 积木模型 值得说明的是,数据结构与算法是独立于编程语言的。正因如此,本书得以提供基于多种编程语言的实现。 约定俗成的简称 在实际 据结构是计算机中组织和存储数据的 方式。 ‧ 数据结构与算法紧密相连。数据结构是算法的基石,而算法为数据结构注入生命力。 ‧ 我们可以将数据结构与算法类比为拼装积木,积木代表数据,积木的形状和连接方式等代表数据结构, 拼装积木的步骤则对应算法。 1. Q & A Q:作为一名程序员,我在日常工作中从未用算法解决过问题,常用算法都被编程语言封装好了,直接用就 可以了;这是否意味着我们工作中的问题还没有到达需要算法的程度? UTF‑16 编码的字符串的长度也是 ?(1) 的操作。但是,计算 UTF‑8 编码的字符串的长度需要遍历整个字符串。 ‧ 字符串操作:在 UTF‑16 编码的字符串上,很多字符串操作(如分割、连接、插入、删除等)更容易进行。 在 UTF‑8 编码的字符串上,进行这些操作通常需要额外的计算,以确保不会产生无效的 UTF‑8 编码。 实际上,编程语言的字符编码方案设计是一个很有趣的话题,涉及许多因素。0 码力 | 387 页 | 18.51 MB | 10 月前3Hello 算法 1.0.0 Rust版
1‑5 拼装积木 两者的详细对应关系如表 1‑1 所示。 表 1‑1 将数据结构与算法类比为拼装积木 数据结构与算法 拼装积木 输入数据 未拼装的积木 数据结构 积木组织形式,包括形状、大小、连接方式等 算法 把积木拼成目标形态的一系列操作步骤 输出数据 积木模型 值得说明的是,数据结构与算法是独立于编程语言的。正因如此,本书得以提供基于多种编程语言的实现。 � 约定俗成的简称 构是计算机中组织和存储数据的 方式。 ‧ 数据结构与算法紧密相连。数据结构是算法的基石,而算法是数据结构发挥作用的舞台。 ‧ 我们可以将数据结构与算法类比为拼装积木,积木代表数据,积木的形状和连接方式等代表数据结构, 拼装积木的步骤则对应算法。 17 第 2 章 复杂度分析 � 复杂度分析犹如浩瀚的算法宇宙中的时空向导。 它带领我们在时间与空间这两个维度上深入探索,寻找更优雅的解决方案。 UTF‑16 编码的字符串的长度也是 ?(1) 的操作。但是,计算 UTF‑8 编码的字符串的长度需要遍历整个字符串。 ‧ 字符串操作:在 UTF‑16 编码的字符串上,很多字符串操作(如分割、连接、插入、删除等)更容易进行。 在 UTF‑8 编码的字符串上,进行这些操作通常需要额外的计算,以确保不会产生无效的 UTF‑8 编码。 实际上,编程语言的字符编码方案设计是一个很有趣的话题,涉及许多因素。0 码力 | 383 页 | 17.61 MB | 1 年前3Comprehensive Rust(简体中文) 202412
嵌入式 Rust:进阶篇 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 XIII 并发:上午 305 57 欢迎了解 Rust 中的并发 306 58 线程 307 58.1 范围线程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318 62.3 并发编程:上午练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320 XIV 并发:下午 326 63 异步 Rust 327 63.1 async/await . . . . . . . . . 342 66.2 广播聊天应用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343 66.3 并发编程:下午练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346 XV 结束语 351 67 谢谢! 3520 码力 | 359 页 | 1.33 MB | 10 月前3新一代分布式高性能图数据库的构建 - 沈游人
资管计划 / 资金往来 / 担 保 / 借贷 / 集团 / 控股 / 上下 游 ... 父子 / 组合 / 继承 转账 / 大额转账 / 频繁转 账 /... 拥有 拥有 持有 登录 / 连接 已购买 / 意向购 买 / 潜在购买 /... 个人 客户 账户 机构 客户 资产 合约 员工 手机号 设备 商品 商品 查询 / 操作 生活中无处不在的图 图分析技术分类 图查询及其应用场景 图查询 • 使用图数据库的查询语言进行点边的关联查询,可以快速完成传统数据库难以完成的 多度点边关 联 当前图的典型应用场景 路径识别 群体挖掘 节点识别 相似节点 链接预测 连接强度 一致行动人 同事关系 实际控制人 可能认识的人 上下游 同爱好的人 亲属关系 … 人与人、企业与企业、企业与人之间的 复杂、潜在关系推导和挖掘 为已有的分析模型增加“关系特征”维 架构,大规模集群 分布式存储及并行计 算, Shared Nothing 模式支 持存储计算分离 高性能 基于 Rust 开发的分布式存储引 擎及图计算引擎,精细的内存 管理设计,内置索引系统,支 持毫秒级的并发查询响应速度 易用 AQL(Atlas Graph Query Language) ,类 SQL 的图查询 语言,内置上百种分析函数, 面向分析师友好,拥抱标准, 基于 openCypher 向0 码力 | 38 页 | 24.68 MB | 1 年前3Rust 语言学习笔记
语言设计的看法主要是:重大创新,却又博采众长。 Rust 为了解决内存安全问题重新设计了类型系统,提出了所有权的概念,同时 为了能够解决当前大多数语言无法检测到的运行时错误,rust 创造性地设计了 无畏并发。Rust 借鉴了很多优秀语言的设计理念,以及快速迭代的社区,这些 都是 Rust 受到赞赏的重要因素。 Rust 是一门系统级编程语言,被设计为保证内存和线程安全,并防止段错误。 作为系统级编程语言,它的基本理念是 Rust 可以被归为通用的、多范式、编译型的编程语言,类似 C 或者 C++。与 这两门编程语言不同的是,Rust 是线程安全的! Rust 编程语言的目标是,创建一个高度安全和并发的软件系统。它强调安全性、 并发和内存控制。尽管 Rust 借用了 C 和 C++ 的语法,它不允许空指针和悬 挂指针,二者是 C 和 C++ 中系统崩溃、内存泄露和不安全代码的根源。 Rust 中有诸如 if 程序设计语言的本质在于赋能(empowerment):无论你现在编写的是何 种代码,Rust 能让你在更为广泛的编程领域走得更远,写出自信。 比如,“系统层面”(“systems-level”)的工作,涉及内存管理、数据表示 和并发等底层细节。从传统角度来看,这是一个神秘的编程领域,只为浸淫多 年的极少数人所触及,也只有他们能避开那些臭名昭著的陷阱。即使谨慎的实 践者,亦唯恐代码出现漏洞、崩溃或损坏。 Rust 破除了这些0 码力 | 117 页 | 2.24 MB | 1 年前3Rust HTTP 协议栈在终端通信场景的实践 - 胡凯
简单快速:客户向服务器请求服务时,只需传送 请求方法、路径和请求头。HTTP 协议简单、HTTP 服务器的程序规模小,因而通信速度很快。 ✓ 灵活:HTTP 支持传输任意类型的数据对象。 ✓ 无连接:HTTP 限制每次连接只处理一个请求,节 省传输时间。(在 HTTP/1.1 之后变更) ✓ 无状态:HTTP 协议对于事务处理没有记忆能力, 每个请求/应答之间相互独立。 Rust China Conf Status HTTP/1.1 • 连接可以复用 • 管线化技术 • 支持响应分块 • 引入额外的缓存 控制机制 • 引入内容协商机 制 • 报文基本格式不 再变化 HTTP/2 • 二进制协议 • 支持多路复用 • 支持响应分块 • 支持标头压缩 • 支持服务端推送 • 报文基本格式不 再变化 HTTP/3 • 基于 UDP 连接 • 报文基本格式不 再变化 Rust Conf 2022 – 2023, Shanghai, China Rust 与 HTTP 协议 Rust 对于 HTTP 协议有良好支持: HTTP 协议是以 TCP\TLS\UDP 等各种连接为基础的,非常依赖于高性能的 IO 操作。 利用 Rust 异步实现 HTTP 协议和各种应用程序能得到十分可观的性能提升,并且能降低用户编码的难度。 Rust China Conf 2022 –0 码力 | 26 页 | 1.25 MB | 1 年前3
共 31 条
- 1
- 2
- 3
- 4