电子书 编程

(中英对照)Rust 异步编程(双语版电子书)

¥2.90 已售 0
✓ 自动发货 ✓ 永久有效 ✓ 售后保障

资源介绍

本书围绕 Rust 中的异步编程展开,从基础概念到实际实现,逐步深入,主要分为三个部分:异步编程基础、事件队列与绿色线程、Rust 中的 Futures 与 async/await。 第一部分:异步编程基础 并发与异步编程概述 历史演进:介绍了从无操作系统的单 CPU 执行,到非抢占式多任务、抢占式多任务、超线程和多核处理器的发展历程。 关键概念: 并发(处理多个任务)与并行(同时执行多个任务)的区别。 同步代码在操作系统和 CPU 视角下的非同步本质。 操作系统在并发中的角色,包括进程调度、系统调用等。 CPU 与操作系统协作:讲解了 CPU 的内存管理单元(MMU)、页表、特权级别等,以及中断处理机制。 编程语言如何建模异步程序流 分类: 协作式与非协作式多任务。 有栈与无栈协程。 具体实现: 操作系统线程:分析其创建开销、栈特性、上下文切换和调度特点。 绿色线程 / 纤程:探讨其栈管理、上下文切换、调度及 FFI 调用问题。 回调机制:阐述其实现方式及 “回调地狱” 问题。 协程:包括 promises 和 futures,以及 async/await 语法。 OS 支持的事件队列、系统调用与跨平台抽象 事件队列:解释了阻塞 I/O、非阻塞 I/O,以及 epoll(Linux)、kqueue(macOS)、IOCP(Windows)等事件队列的工作机制,区分就绪型和完成型事件队列。 系统调用与 FFI:通过示例讲解了不同层级的抽象,从底层的原始系统调用到高级的标准库封装,以及跨平台抽象的挑战。 第二部分:事件队列与绿色线程 创建自己的事件队列 以 Linux 的 epoll 为基础,模拟 mio 库的 API,实现一个简单的事件队列,涵盖 epoll 的设计、FFI 模块、Poll 模块及主程序实现,解释了边缘触发与水平触发事件的区别。 创建自己的纤程 介绍了指令集、硬件架构和 ABI(如 System V ABI for x86-64)的基础知识。 通过 Rust 内联汇编,实现了栈的管理、上下文切换等,构建了简单的纤程及运行时,包括 guard、skip 和 switch 函数。 第三部分:Rust 中的 Futures 与 async/await Rust 中的 Futures 定义了 Future trait,区分叶子 future(代表资源操作)和非叶子 future(用户编写的异步任务)。 讲解了异步运行时的基本模型,包括反应器(处理 I/O 事件通知)、执行器(调度任务)和 future(可暂停的任务)。 协程与 async/await 介绍无栈协程,通过手动编写协程示例,展示其状态机本质。 讲解 async/await 如何将代码转换为状态机,以及相关的宏和预处理过程。 运行时、Wakers 与反应器 - 执行器模式 阐述运行时的设计,包括反应器和执行器的分离。 实现了 Waker 机制,使任务在事件就绪时被唤醒,完善了运行时,支持并发运行多个 future。 协程、自引用结构体与 Pinning 分析了自引用结构体在异步编程中存在的问题,以及 Rust 中 Pinning 的作用。 讲解了如何通过 Pinning 将值固定在内存中,防止移动,确保自引用的安全性。 创建自己的运行时 整合前面的知识,构建一个能运行 Rust futures 的完整运行时,包括处理 I/O、调度任务等。 讨论了异步 Rust 的挑战,如显式与隐式反应器实例化、易用性与效率的平衡等,以及异步 Rust 的未来发展。 书籍特点 实践性强:通过大量示例代码,从基础到复杂,逐步引导读者实现异步编程相关组件,如事件队列、纤程、运行时等。 深入浅出:不仅讲解 Rust 异步编程的具体实现,还涵盖了底层的 CPU、操作系统知识,帮助读者建立完整的知识体系。 兼顾理论与实践:在解释概念的同时,提供可运行的示例,使读者能够动手实践,加深理解。 适用场景 希望深入理解 Rust 异步编程原理的开发者。 对并发、并行编程感兴趣,想了解不同编程语言处理异步方式的程序员。 需要构建高性能异步应用(如网络服务、分布式系统等)的开发人员。