ITPub博客

首页 > 数据库 > 数据库开发技术 > 【翻译】200行代码讲透RUST FUTURES (1)

【翻译】200行代码讲透RUST FUTURES (1)

原创 数据库开发技术 作者:Rust语言中文社区 时间:2020-07-23 21:52:27 0 删除 编辑
原文地址 Futures Explained in 200 Lines of Rust
https://cfsamson.github.io/books-futures-explained/introduction.html
  • 一 引言
    • 这本书涵盖的内容
    • 阅读练习和进一步阅读
    • 感谢
  • 二 背景资料
    • 线程
    • 绿色线程(Green threads)
    • 基于回调的方法
    • 从回调到承诺 (promises)
  • 三 Rust中的Futures
    • 概述
    • Futures
    • Leaf futures
    • Non-leaf-futures
    • 运行时(Runtimes)
    • Rust 的标准库做了什么
    • I/O密集型 VS CPU密集型任务
    • 奖励部分
  • 四 唤醒器和上下文(Waker and Context)
    • 概述
    • 唤醒器
    • 理解唤醒器
    • Rust中的胖指针
    • 奖励部分
  • 五 生成器和async/await
    • 概述
    • 为什么要学习生成器
    • 组合子(Combinators)
    • 无栈协程/生成器
    • 生成器是如何工作的
    • 异步和生成器
    • 奖励部分-正在使用的自引用生成器
  • 六 Pin
    • 概述
    • 定义
    • Pinning和自引用结构
    • 固定在栈上
    • 固定在堆上
    • Pinning的一些实用规则
    • 映射/结构体的固定
    • Pin和Drop
    • 把它们放在一起
    • 奖励部分
  • 七 实现Futures--主要例子
    • 实现我们自己的Futures
    • 执行器
    • 实现Future
    • Reactor
    • Async/Await和并发Async/Await
    • 奖励部分-暂停线程的更好办法
  • 八 完整的例子
  • 九 结论和练习
    • 编码park
    • 编码传递reactor
    • 创建一个更好的执行器
    • 进一步阅读
  • 转载说明

一 引言

这本书的目的是用一个例子驱动的方法来解释Rust中的Futures,探索为什么他们被设计成这样,以及他们如何工作。我们还将介绍在编程中处理并发性时的一些替代方案。
理解这本书中描述的细节, 不需要使用Rust中的 futures或async/await。这是为那些好奇的人准备的,他们想知道这一切是如何运作的。

这本书涵盖的内容

这本书将试图解释你可能想知道的一切,包括不同类型的执行器(executor)和运行时(runtime)的主题。我们将在本书中实现一个非常简单的运行时,介绍一些概念,但这已经足够开始了。
Stjepan Glavina 发表了一系列关于异步运行时和执行器的优秀文章,如果谣言属实,那么在不久的将来他会发表更多的文章。
你应该做的是先读这本书,然后继续阅读 stejpang 的文章,了解更多关于运行时以及它们是如何工作的,特别是:
  1. 构建自的block_on
  2. 构建自己的executor

我将自己限制在一个200行的主示例(因此才有了这个标题)中,以限制范围并介绍一个可以轻松进一步研究的示例。
然而,有很多东西需要消化,这并不像我所说的那么简单,但是我们会一步一步来,所以喝杯茶,放松一下。
这本书是在开放的,并欢迎贡献。你可以在这里找到这本书。最后的例子,你可以克隆或复制可以在这里找到。任何建议或改进可以归档为一个公关或在问题追踪的书。
一如既往,我们欢迎各种各样的反馈。

阅读练习和进一步阅读

在最后一章)中,我冒昧地提出了一些小练习,如果你想进一步探索的话。
这本书也是我在 Rust 中写的关于并发编程的第四本书。如果你喜欢它,你可能也想看看其他的:
  • Green Threads Explained in 200 lines of rust
  • The Node Experiment - Exploring Async Basics with Rust 节点实验——用Rust探索异步基础
  • Epoll, Kqueue and IOCP Explained with Rust 用 Rust 解释 Epoll,Kqueue 和 IOCP

感谢

我想借此机会感谢 mio,tokio,async std,Futures,libc,crossbeam 背后的人们,他们支撑着这个异步生态系统,却很少在我眼中得到足够的赞扬。
特别感谢 jonhoo,他对我这本书的初稿给予了一些有价值的反馈。他还没有读完最终的成品,但是我们应该向他表示感谢。

原文作者:Rust语言中文社区;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2020-06-11

  • 博文量
    1769
  • 访问量
    719037