0
点赞
收藏
分享

微信扫一扫

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

原文地址 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,他对我这本书的初稿给予了一些有价值的反馈。他还没有读完最终的成品,但是我们应该向他表示感谢。


举报

相关推荐

0 条评论