<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Rust on Hellokitty&#39;s Blog</title>
    <link>https://yangyang233333.github.io/tags/rust/</link>
    <description>Recent content in Rust on Hellokitty&#39;s Blog</description>
    <generator>Hugo</generator>
    <language>zh-CN</language>
    <lastBuildDate>Wed, 26 Aug 2026 13:50:00 +0800</lastBuildDate>
    <atom:link href="https://yangyang233333.github.io/tags/rust/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>NVIDIA Dynamo 源码阅读（二）：分布式运行时如何组织服务与请求</title>
      <link>https://yangyang233333.github.io/posts/nvidia-dynamo-runtime-source-reading/</link>
      <pubDate>Wed, 26 Aug 2026 13:50:00 +0800</pubDate>
      <guid>https://yangyang233333.github.io/posts/nvidia-dynamo-runtime-source-reading/</guid>
      <description>深入 lib/runtime，分析 Namespace、Component、Endpoint、服务发现和网络流水线如何组成 Dynamo 的请求平面。</description>
    </item>
    <item>
      <title>Rust 异步编程原理：Future、状态机、Waker 与 Executor</title>
      <link>https://yangyang233333.github.io/posts/rust-async-state-machine/</link>
      <pubDate>Tue, 25 Aug 2026 15:35:00 +0800</pubDate>
      <guid>https://yangyang233333.github.io/posts/rust-async-state-machine/</guid>
      <description>面向初学者，从 Future::poll 出发推导 Rust async/await 状态机，并解释 Waker、Executor、Reactor、Pin、并发与阻塞。</description>
    </item>
    <item>
      <title>Rust Tokio 深入解析：运行时原理、并发模型与最佳实践</title>
      <link>https://yangyang233333.github.io/posts/rust-tokio-runtime-and-best-practices/</link>
      <pubDate>Fri, 21 Aug 2026 11:35:00 +0800</pubDate>
      <guid>https://yangyang233333.github.io/posts/rust-tokio-runtime-and-best-practices/</guid>
      <description>&lt;p&gt;Rust 语言只定义了 &lt;code&gt;Future&lt;/code&gt;、&lt;code&gt;async/await&lt;/code&gt; 和 &lt;code&gt;Waker&lt;/code&gt; 等异步基础设施，并没有在标准库中提供完整的异步运行时。Tokio 补齐了这一层：它提供任务调度器、网络 I/O 驱动、定时器、异步同步原语、异步文件接口以及阻塞任务隔离机制。&lt;/p&gt;
&lt;p&gt;如果把 Rust 异步程序比作一座城市：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Future            = 等待执行的工作
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Executor/Scheduler = 安排工作在哪个线程运行
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;I/O Driver         = 监听 socket 是否就绪
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Timer Driver       = 管理定时器何时到期
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Waker              = 通知某个任务可以继续
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Tokio              = 将上述组件组合成运行时
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;本文不再重复 &lt;code&gt;Future::poll&lt;/code&gt; 和状态机的基础推导，而是聚焦 Tokio 本身：runtime 如何启动，任务如何调度，网络 I/O 为什么不会阻塞线程，以及生产代码中应该怎样处理并发、超时、共享状态、CPU 密集任务和优雅退出。&lt;/p&gt;
&lt;h2 id=&#34;一tokio-提供了什么&#34;&gt;一、Tokio 提供了什么&lt;/h2&gt;
&lt;p&gt;一个典型 Tokio 应用依赖：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-toml&#34; data-lang=&#34;toml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;[&lt;span style=&#34;color:#a6e22e&#34;&gt;dependencies&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;tokio&lt;/span&gt; = { &lt;span style=&#34;color:#a6e22e&#34;&gt;version&lt;/span&gt; = &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;features&lt;/span&gt; = [&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;full&amp;#34;&lt;/span&gt;] }
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;full&lt;/code&gt; 适合学习和应用开发，但库作者通常应该只启用实际需要的 feature，缩短编译时间并减少依赖面。&lt;/p&gt;
&lt;p&gt;Tokio 的主要组成包括：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;组件&lt;/th&gt;
					&lt;th&gt;作用&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;Runtime&lt;/td&gt;
					&lt;td&gt;组合调度器、I/O driver 和 timer driver&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Task&lt;/td&gt;
					&lt;td&gt;由 runtime 调度的异步任务&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;tokio::net&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;TCP、UDP、Unix Socket 等异步网络接口&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;tokio::time&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;sleep、interval、timeout&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;tokio::sync&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;channel、Mutex、RwLock、Semaphore、Notify&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;tokio::fs&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;文件系统异步接口&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;spawn_blocking&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;将阻塞或 CPU 密集工作移出异步 worker&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;select!&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;同时等待多个异步分支&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;需要先建立一个重要认识：&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
