Rust 程序设计语言 简体中文版 1.85.0的实现遵循了零开销原则:不使用的功能无需为其付出代价;而已经 使用的功能,也不可能通过手写代码做得更好。 作为另一个例子,以下代码取自一个音频解码器。解码算法使用线性预测数学运算(linear prediction mathematical operation)来根据之前样本的线性函数预测将来的值。这些代码 使用迭代器链对作用域中的三个变量进行某种数学计算:一个叫 buffer 的数据 slice、一个有 12 个元素的数组 让我们开始理解为何消息在全部延迟后立刻一起到达,而不是逐个在延迟后到达。在一个给定 的异步代码块,await 关键字在代码中出现的顺序也就是程序执行时其发生的顺序。 示例 17-10 中只有一个异步代码块,所以所有的代码线性地执行。这里仍然没有并发。所有 tx.send 调用与 trpl::sleep 调用及其相关的 await point 是依次进行的。只有在此之后 while let 循环才开始执行 recv 调用上的 Stream- > 而不是 Stream
- 。调用者则不得不 await get_messages 本身来获取流。不过请记住:在一个给定的 future 中的一切都是线性发 生的;并发发生在 futures 之间。await get_messages 会要求其在返回接收端流之前发送所有 的消息,包括消息之间的休眠延时。其结果是,超时将毫无用处。流本身没有任何的延时;它
0 码力 | 562 页 | 3.23 MB | 27 天前3- > 而不是 Stream
共 1 条
- 1













