<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>3-简介 on 编程那些事儿</title><link>https://before80.github.io/prgms/Rust/asyncBook/part-guide/</link><description>Recent content in 3-简介 on 编程那些事儿</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Sun, 23 Aug 2026 21:05:58 +0800</lastBuildDate><atom:link href="https://before80.github.io/prgms/Rust/asyncBook/part-guide/index.xml" rel="self" type="application/rss+xml"/><item><title>4-并发编程</title><link>https://before80.github.io/prgms/Rust/asyncBook/part-guide/04-concurrent-programming/</link><pubDate>Sat, 22 Aug 2026 19:00:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/asyncBook/part-guide/04-concurrent-programming/</guid><description>&lt;blockquote&gt;
&lt;p&gt;译文 · 基于 &lt;a href="https://rust-lang.github.io/async-book/"&gt;Asynchronous Programming in Rust&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="concurrent-programming"&gt;并发编程&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://rust-lang.github.io/async-book/part-guide/concurrency.html"&gt;https://rust-lang.github.io/async-book/part-guide/concurrency.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;本章旨在让你对异步并发如何工作、以及它与基于线程的并发有何不同，有一个高层次的理解。我认为在深入实践之前，先建立良好的心智模型很重要；但如果你属于那种想先看些真实代码的人，不妨先读下一两章，再回来看本章。&lt;/p&gt;</description></item><item><title>5-Async 与 await</title><link>https://before80.github.io/prgms/Rust/asyncBook/part-guide/05-async-and-await/</link><pubDate>Sat, 22 Aug 2026 19:00:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/asyncBook/part-guide/05-async-and-await/</guid><description>&lt;blockquote&gt;
&lt;p&gt;译文 · 基于 &lt;a href="https://rust-lang.github.io/async-book/"&gt;Asynchronous Programming in Rust&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="async-and-await"&gt;Async 与 await&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://rust-lang.github.io/async-book/part-guide/async-await.html"&gt;https://rust-lang.github.io/async-book/part-guide/async-await.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;本章我们将开始在 Rust 中进行异步编程，并介绍 &lt;code&gt;async&lt;/code&gt; 和 &lt;code&gt;await&lt;/code&gt; 关键字。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;async&lt;/code&gt; 是函数（以及 traits 等其他项，后面会讲到）上的注解；&lt;code&gt;await&lt;/code&gt; 是表达式中使用的运算符。但在深入这些关键字之前，我们需要涵盖 Rust 异步编程的几个核心概念，这承接上一章的讨论，此处我们将直接与 Rust 编程联系起来。&lt;/p&gt;</description></item><item><title>6-更多 async/await 主题</title><link>https://before80.github.io/prgms/Rust/asyncBook/part-guide/06-more-async-await-topics/</link><pubDate>Sat, 22 Aug 2026 19:00:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/asyncBook/part-guide/06-more-async-await-topics/</guid><description>&lt;blockquote&gt;
&lt;p&gt;译文 · 基于 &lt;a href="https://rust-lang.github.io/async-book/"&gt;Asynchronous Programming in Rust&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="more-async-await-topics"&gt;更多 async/await 主题&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://rust-lang.github.io/async-book/part-guide/more-async-await.html"&gt;https://rust-lang.github.io/async-book/part-guide/more-async-await.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="单元测试"&gt;单元测试&lt;/h2&gt;
&lt;p&gt;如何对异步代码做单元测试？问题是你只能在异步上下文中 await，而 Rust 的单元测试不是 async。好在大多数运行时提供类似 &lt;code&gt;async main&lt;/code&gt; 的测试便利属性。使用 Tokio 时如下：&lt;/p&gt;</description></item><item><title>7-IO 与阻塞问题</title><link>https://before80.github.io/prgms/Rust/asyncBook/part-guide/07-io-and-issues-with-blocking/</link><pubDate>Sat, 22 Aug 2026 19:00:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/asyncBook/part-guide/07-io-and-issues-with-blocking/</guid><description>&lt;blockquote&gt;
&lt;p&gt;译文 · 基于 &lt;a href="https://rust-lang.github.io/async-book/"&gt;Asynchronous Programming in Rust&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="io-and-issues-with-blocking"&gt;IO 与阻塞问题&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://rust-lang.github.io/async-book/part-guide/io.html"&gt;https://rust-lang.github.io/async-book/part-guide/io.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;高效处理 IO（输入/输出）是异步编程的主要动机之一，大多数异步程序会做大量 IO。归根结底，IO 的问题在于它比计算慢几个数量级，因此干等 IO 完成而不做其他工作极其低效。理想情况下，异步编程让程序在等待 IO 时能做其他工作。&lt;/p&gt;</description></item><item><title>8-并发组合 Future</title><link>https://before80.github.io/prgms/Rust/asyncBook/part-guide/08-composing-futures-concurrently/</link><pubDate>Sat, 22 Aug 2026 19:00:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/asyncBook/part-guide/08-composing-futures-concurrently/</guid><description>&lt;blockquote&gt;
&lt;p&gt;译文 · 基于 &lt;a href="https://rust-lang.github.io/async-book/"&gt;Asynchronous Programming in Rust&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="composing-futures-concurrently"&gt;并发组合 Future&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://rust-lang.github.io/async-book/part-guide/concurrency-primitives.html"&gt;https://rust-lang.github.io/async-book/part-guide/concurrency-primitives.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;本章涵盖 future 组合的更多方式。特别是一些新的、可并发（但不并行）执行 future 的方式。表面上，本章介绍的新函数/宏很简单，但底层概念可能相当微妙。我们会先回顾 future、并发与并行，但你可能也想重读较早比较&lt;a href="../04-concurrent-programming/#concurrency-and-parallelism"&gt;并发与并行&lt;/a&gt;的一节。&lt;/p&gt;</description></item><item><title>9-通道、锁与同步</title><link>https://before80.github.io/prgms/Rust/asyncBook/part-guide/09-channels-locking-and-synchronization/</link><pubDate>Sat, 22 Aug 2026 19:00:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/asyncBook/part-guide/09-channels-locking-and-synchronization/</guid><description>&lt;blockquote&gt;
&lt;p&gt;译文 · 基于 &lt;a href="https://rust-lang.github.io/async-book/"&gt;Asynchronous Programming in Rust&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="channels-locking-and-synchronization"&gt;通道、锁与同步&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://rust-lang.github.io/async-book/part-guide/sync.html"&gt;https://rust-lang.github.io/async-book/part-guide/sync.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;关于同步原语与运行时的特定性说明&lt;/p&gt;
&lt;p&gt;为什么需要异步原语而不是使用同步原语&lt;/p&gt;
&lt;h2 id="通道"&gt;通道&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;基本上与 std 中的相同，但支持 await
&lt;ul&gt;
&lt;li&gt;在任务之间通信（同一线程或不同线程）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;一次性（one shot）&lt;/li&gt;
&lt;li&gt;mpsc&lt;/li&gt;
&lt;li&gt;其他通道&lt;/li&gt;
&lt;li&gt;有界与无界通道&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="锁"&gt;锁&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;异步 Mutex
&lt;ul&gt;
&lt;li&gt;对比 std::Mutex——可以在 await 点持有（在 guard 中借用 mutex，guard 是 Send，调度器感知？或只是因为锁是异步的？），锁是异步的（等待锁可用时不会阻塞线程）
&lt;ul&gt;
&lt;li&gt;甚至有 clippy lint 用于检测在 await 时持有 guard（https://rust-lang.github.io/rust-clippy/master/index.html#await_holding_lock）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;更昂贵，因为可以在 await 期间持有
&lt;ul&gt;
&lt;li&gt;如果可以的话使用 std::Mutex
&lt;ul&gt;
&lt;li&gt;可以使用 try_lock，或预期 mutex 不会有竞争&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;让出时锁不会神奇地释放（这正是锁的意义所在！）&lt;/li&gt;
&lt;li&gt;在 await 期间持有 mutex 导致死锁
&lt;ul&gt;
&lt;li&gt;任务死锁，但其他任务可以继续推进，因此在进程统计/工具/OS 中可能看起来不像死锁&lt;/li&gt;
&lt;li&gt;通常建议——限制作用域、最小化锁、排序锁、优先使用替代方案&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;没有 mutex 中毒（poisoning）&lt;/li&gt;
&lt;li&gt;lock_owned&lt;/li&gt;
&lt;li&gt;blocking_lock
&lt;ul&gt;
&lt;li&gt;不能在 async 中使用&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;适用于其他锁（上述内容是否应在专门讨论 mutex 之前移动？可能是的）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;RWLock&lt;/li&gt;
&lt;li&gt;Semaphore&lt;/li&gt;
&lt;li&gt;让出（yielding）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="其他同步原语"&gt;其他同步原语&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;notify、barrier&lt;/li&gt;
&lt;li&gt;OnceCell&lt;/li&gt;
&lt;li&gt;原子操作&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>10-异步编程工具</title><link>https://before80.github.io/prgms/Rust/asyncBook/part-guide/10-tools-for-async-programming/</link><pubDate>Sat, 22 Aug 2026 19:00:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/asyncBook/part-guide/10-tools-for-async-programming/</guid><description>&lt;blockquote&gt;
&lt;p&gt;译文 · 基于 &lt;a href="https://rust-lang.github.io/async-book/"&gt;Asynchronous Programming in Rust&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="tools-for-async-programming"&gt;异步编程工具&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://rust-lang.github.io/async-book/part-guide/tools.html"&gt;https://rust-lang.github.io/async-book/part-guide/tools.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;为什么需要专门的 async 工具&lt;/li&gt;
&lt;li&gt;是否还有其他需要涵盖的工具
&lt;ul&gt;
&lt;li&gt;loom&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="监控"&gt;监控&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/tokio-rs/console"&gt;Tokio console&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="追踪与日志"&gt;追踪与日志&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;async 追踪的问题&lt;/li&gt;
&lt;li&gt;tracing crate（https://github.com/tokio-rs/tracing）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="调试"&gt;调试&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;理解 async 回溯（RUST_BACKTRACE 和在调试器中）&lt;/li&gt;
&lt;li&gt;调试 async 代码的技术&lt;/li&gt;
&lt;li&gt;使用 Tokio console 进行调试&lt;/li&gt;
&lt;li&gt;调试器支持（WinDbg？）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="性能分析"&gt;性能分析&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;async 如何干扰火焰图&lt;/li&gt;
&lt;li&gt;如何分析 async IO&lt;/li&gt;
&lt;li&gt;深入了解运行时
&lt;ul&gt;
&lt;li&gt;Tokio metrics&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>11-析构与清理</title><link>https://before80.github.io/prgms/Rust/asyncBook/part-guide/11-destruction-and-clean-up/</link><pubDate>Sat, 22 Aug 2026 19:00:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/asyncBook/part-guide/11-destruction-and-clean-up/</guid><description>&lt;blockquote&gt;
&lt;p&gt;译文 · 基于 &lt;a href="https://rust-lang.github.io/async-book/"&gt;Asynchronous Programming in Rust&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="destruction-and-clean-up"&gt;析构与清理&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://rust-lang.github.io/async-book/part-guide/dtors.html"&gt;https://rust-lang.github.io/async-book/part-guide/dtors.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;对象析构与 Drop 回顾&lt;/li&gt;
&lt;li&gt;软件中一般的清理需求&lt;/li&gt;
&lt;li&gt;Async 相关问题
&lt;ul&gt;
&lt;li&gt;清理期间可能想异步执行某些操作，例如发送最终消息&lt;/li&gt;
&lt;li&gt;可能需要清理仍在异步使用中的内容&lt;/li&gt;
&lt;li&gt;可能想在异步任务完成或取消时清理，且无法捕获该情况&lt;/li&gt;
&lt;li&gt;清理阶段运行时的状态（尤其是我们正在 panic 等情况时）&lt;/li&gt;
&lt;li&gt;没有 async Drop
&lt;ul&gt;
&lt;li&gt;编写中&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;前向引用到 completion io 主题&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="取消"&gt;取消&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;如何发生（回顾 more-async-await.md）
&lt;ul&gt;
&lt;li&gt;drop 一个 future&lt;/li&gt;
&lt;li&gt;取消令牌（cancellation token）&lt;/li&gt;
&lt;li&gt;abort 函数&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;关于&amp;quot;捕获&amp;quot;取消我们可以做什么
&lt;ul&gt;
&lt;li&gt;记录或监控取消&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;取消如何影响其他 future/任务（前向引用到取消安全性章节，这里只是提醒）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="panic-与-async"&gt;Panic 与 async&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;panic 跨任务传播（spawn 结果）&lt;/li&gt;
&lt;li&gt;panic 导致数据不一致（tokio mutex）&lt;/li&gt;
&lt;li&gt;在 panic 时调用 async 代码（确保不要这样做）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="清理模式"&gt;清理模式&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;避免需要清理（abort/重启）&lt;/li&gt;
&lt;li&gt;不使用 async 进行清理，也不必过于担心&lt;/li&gt;
&lt;li&gt;async 清理方法 + dtor bomb（即，将清理与析构分离）&lt;/li&gt;
&lt;li&gt;在单独的任务、线程或监督对象/进程中集中/外包清理&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tokio.rs/tokio/topics/shutdown"&gt;https://tokio.rs/tokio/topics/shutdown&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="为什么还没有-async-drop"&gt;为什么还没有 async Drop&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;注意这是高级章节，不必阅读&lt;/li&gt;
&lt;li&gt;为什么 async Drop 很难&lt;/li&gt;
&lt;li&gt;可能的解决方案及其问题&lt;/li&gt;
&lt;li&gt;当前状态&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>12-Future</title><link>https://before80.github.io/prgms/Rust/asyncBook/part-guide/12-futures/</link><pubDate>Sat, 22 Aug 2026 19:00:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/asyncBook/part-guide/12-futures/</guid><description>&lt;blockquote&gt;
&lt;p&gt;译文 · 基于 &lt;a href="https://rust-lang.github.io/async-book/"&gt;Asynchronous Programming in Rust&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="futures"&gt;Future&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://rust-lang.github.io/async-book/part-guide/futures.html"&gt;https://rust-lang.github.io/async-book/part-guide/futures.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;我们在前面的章节中大量讨论了 future；它们是 Rust async 编程故事的关键部分！在本章中，我们将深入了解 future 是什么、它们如何工作，以及一些直接操作 future 的库。&lt;/p&gt;</description></item><item><title>13-运行时</title><link>https://before80.github.io/prgms/Rust/asyncBook/part-guide/13-runtimes/</link><pubDate>Sat, 22 Aug 2026 19:00:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/asyncBook/part-guide/13-runtimes/</guid><description>&lt;blockquote&gt;
&lt;p&gt;译文 · 基于 &lt;a href="https://rust-lang.github.io/async-book/"&gt;Asynchronous Programming in Rust&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="runtimes"&gt;运行时&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://rust-lang.github.io/async-book/part-guide/runtimes.html"&gt;https://rust-lang.github.io/async-book/part-guide/runtimes.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="运行-async-代码"&gt;运行 async 代码&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;显式启动 vs async main&lt;/li&gt;
&lt;li&gt;tokio 上下文概念&lt;/li&gt;
&lt;li&gt;block_on&lt;/li&gt;
&lt;li&gt;代码中反映的运行时（Runtime、Handle）&lt;/li&gt;
&lt;li&gt;运行时关闭&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="线程与任务"&gt;线程与任务&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;默认工作窃取、多线程
&lt;ul&gt;
&lt;li&gt;回顾 Send + &amp;lsquo;static 约束&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;yield&lt;/li&gt;
&lt;li&gt;spawn-local&lt;/li&gt;
&lt;li&gt;spawn-blocking（回顾）、block-in-place&lt;/li&gt;
&lt;li&gt;tokio 特有的让出到其他线程、本地 vs 全局队列等内容&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="配置选项"&gt;配置选项&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;线程池大小&lt;/li&gt;
&lt;li&gt;单线程、每核心一线程等&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="替代运行时"&gt;替代运行时&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;为什么你想使用不同的运行时或实现自己的&lt;/li&gt;
&lt;li&gt;高层设计中存在哪些变化&lt;/li&gt;
&lt;li&gt;前向引用到高级章节&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>14-定时器与信号处理</title><link>https://before80.github.io/prgms/Rust/asyncBook/part-guide/14-timers-and-signal-handling/</link><pubDate>Sat, 22 Aug 2026 19:00:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/asyncBook/part-guide/14-timers-and-signal-handling/</guid><description>&lt;blockquote&gt;
&lt;p&gt;译文 · 基于 &lt;a href="https://rust-lang.github.io/async-book/"&gt;Asynchronous Programming in Rust&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="timers-and-signal-handling"&gt;定时器与信号处理&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://rust-lang.github.io/async-book/part-guide/timers-signals.html"&gt;https://rust-lang.github.io/async-book/part-guide/timers-signals.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="时间与定时器"&gt;时间与定时器&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;运行时集成，不要使用 thread::sleep 等&lt;/li&gt;
&lt;li&gt;std Instant 和 Duration&lt;/li&gt;
&lt;li&gt;sleep&lt;/li&gt;
&lt;li&gt;interval&lt;/li&gt;
&lt;li&gt;timeout
&lt;ul&gt;
&lt;li&gt;特殊 future vs select/race&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="信号处理"&gt;信号处理&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;什么是信号处理，为什么它是 async 问题？&lt;/li&gt;
&lt;li&gt;非常依赖操作系统&lt;/li&gt;
&lt;li&gt;参见 Tokio 文档&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>15-异步迭代器（Stream）</title><link>https://before80.github.io/prgms/Rust/asyncBook/part-guide/15-async-iterators-streams/</link><pubDate>Sat, 22 Aug 2026 19:00:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/asyncBook/part-guide/15-async-iterators-streams/</guid><description>&lt;blockquote&gt;
&lt;p&gt;译文 · 基于 &lt;a href="https://rust-lang.github.io/async-book/"&gt;Asynchronous Programming in Rust&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="async-iterators-streams"&gt;异步迭代器（Stream）&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://rust-lang.github.io/async-book/part-guide/streams.html"&gt;https://rust-lang.github.io/async-book/part-guide/streams.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Stream 作为异步迭代器或作为多个 future&lt;/li&gt;
&lt;li&gt;编写中
&lt;ul&gt;
&lt;li&gt;当前状态&lt;/li&gt;
&lt;li&gt;futures 和 Tokio Stream traits&lt;/li&gt;
&lt;li&gt;nightly trait&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;像同步迭代器一样惰性&lt;/li&gt;
&lt;li&gt;固定与流（前向引用到固定章节）&lt;/li&gt;
&lt;li&gt;熔断流&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="消费异步迭代器"&gt;消费异步迭代器&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;while let 与 async next&lt;/li&gt;
&lt;li&gt;for_each、for_each_concurrent&lt;/li&gt;
&lt;li&gt;collect&lt;/li&gt;
&lt;li&gt;into_future、buffered&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="stream-组合器"&gt;Stream 组合器&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;接受 future 而非闭包&lt;/li&gt;
&lt;li&gt;一些示例组合器&lt;/li&gt;
&lt;li&gt;unordered 变体&lt;/li&gt;
&lt;li&gt;StreamGroup&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="与流一起使用-joinselectrace"&gt;与流一起使用 join/select/race&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;在循环中使用 select 的隐患&lt;/li&gt;
&lt;li&gt;熔断&lt;/li&gt;
&lt;li&gt;与仅使用 future 的区别&lt;/li&gt;
&lt;li&gt;这些的替代方案
&lt;ul&gt;
&lt;li&gt;Stream::merge 等&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="实现异步迭代器"&gt;实现异步迭代器&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;实现 trait&lt;/li&gt;
&lt;li&gt;实用性与工具函数&lt;/li&gt;
&lt;li&gt;async_iter stream 宏&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="sink"&gt;Sink&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.rs/futures/latest/futures/sink/index.html"&gt;https://docs.rs/futures/latest/futures/sink/index.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="未来工作"&gt;未来工作&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;当前状态
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://rust-lang.github.io/rfcs/2996-async-iterator.html"&gt;https://rust-lang.github.io/rfcs/2996-async-iterator.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;async next vs poll&lt;/li&gt;
&lt;li&gt;async 迭代语法&lt;/li&gt;
&lt;li&gt;（async）生成器&lt;/li&gt;
&lt;li&gt;借用迭代器&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>