Tokio

一个用 Rust 编写可靠的异步应用程序的运行时。提供 I/O、网络、调度、定时器等功能。「A runtime for writing reliable, asynchronous, and slim applications with the Rust programming language.」

Github星跟踪图

Tokio

一个用 Rust 编程语言编写可靠的、异步的、纤细的应用程序的运行时。它的特点是:

  • 快速:Tokio 的零成本抽象为你提供了裸机性能。
  • 可靠:Tokio 利用 Rust 的所有权、类型系统和并发模型来减少错误并确保线程安全。
  • 可扩展性:Tokio (对系统资源)占用极小,并自然地处理背压和撤销。

网站 | 指南 | API 文档 | Chat

概述

Tokio 是一个事件驱动的、非阻塞的 I/O 平台,用于使用 Rust 编程语言编写异步应用程序。在高层次上,它提供了几个主要组件:

  • 一个多线程的,基于工作窃取(算法)的任务调度器
  • 一个由操作系统的事件队列(epoll、kqueue、IOCP等)支持的反应器。
  • 异步的 TCP 和 UDP 套接字。

这些组件为构建异步应用程序提供了必要的运行时组件。

例子

一个基于 Tokio 的基本的 TCP echo 服务器:

use tokio::net::TcpListener;
use tokio::io::{AsyncReadExt, AsyncWriteExt};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut listener = TcpListener::bind("127.0.0.1:8080").await?;
    loop {
        let (mut socket, _) = listener.accept().await?;
        tokio::spawn(async move {
            let mut buf = [0; 1024];
            // In a loop, read data from the socket and write the data back.
            loop {
                let n = match socket.read(&mut buf).await {
                    // socket closed
                    Ok(n) if n == 0 => return,
                    Ok(n) => n,
                    Err(e) => {
                        eprintln!("failed to read from socket; err = {:?}", e);
                        return;
                    }
                };
                // Write the data back
                if let Err(e) = socket.write_all(&buf[0..n]).await {
                    eprintln!("failed to write to socket; err = {:?}", e);
                    return;
                }
            }
        });
    }
}

更多的例子可以在 这里 找到。对于一个更大的 "真实世界" 的例子,请看 mini-redis 资源库。

要查看可以启用的可用特性标志列表,请查看我们的 文档

获得帮助

首先,看看你的问题是否可以在 指南API 文档 中找到答案。如果没有答案,Tokio Discord 服务器 上有一个活跃的社区。我们很乐意回答您的问题。你也可以在 讨论页面 提出你的问题。

贡献

感谢你对项目的帮助改进!我们很高兴有你的帮助。我们很高兴有您的参与! 我们有一个 贡献指南 来帮助你参与到Tokio项目中。

相关项目

除了这个仓库中的箱子,Tokio 项目还维护了其他几个库,包括:

  • hyper:一个快速正确的 HTTP/1.1 和 HTTP/2 的 Rust实现。
  • tonic一个基于 HTTP/2 的 gRPC 实现,专注于高性能,互操作性和灵活性。
  • warp:一个超级简单的、可组合的神速 web 服务器框架。
  • tower:一个模块化和可重复使用的组件库,用于构建强大的网络客户端和服务器。
  • tracing (原 tokio-trace)。一个应用级跟踪和异步诊断的框架。
  • rdbc:Rust 数据库连接库,用于 MySQL、Postgres 和 SQLite。
  • mio:一个低级的、跨平台的操作系统 I/O APIs 抽象,为 tokio 提供动力。
  • bytes:用于处理字节的实用工具,包括高效的字节缓冲器。
  • loom:一个用于并发 Rust 代码的测试工具

支持的 Rust 版本

Tokio 是根据最新的稳定版本构建的。最低支持的版本是 1.45。目前的 Tokio 版本并不保证能在 Rust 早于最小支持版本的版本上构建。

许可证

本项目采用 MIT 授权

贡献

除非您另有明确说明,否则您故意提交的任何稿件都将被授权为 MIT,没有任何附加条款或条件。


主要指标

概览
名称与所有者tokio-rs/tokio
主编程语言Rust
编程语言Rust (语言数: 2)
平台Linux, Mac, Windows
许可证MIT License
所有者活动
创建于2016-09-09 22:31:36
推送于2025-07-14 08:28:02
最后一次提交2025-07-14 16:28:02
发布数360
最新版本名称tokio-1.46.1 (发布于 2025-07-04 12:38:19)
第一版名称0.1.0 (发布于 2016-09-09 22:04:16)
用户参与
星数29.1k
关注者数314
派生数2.7k
提交数4.1k
已启用问题?
问题数2494
打开的问题数334
拉请求数3554
打开的拉请求数54
关闭的拉请求数619
项目设置
已启用Wiki?
已存档?
是复刻?
已锁定?
是镜像?
是私有?

Tokio

A runtime for writing reliable, asynchronous, and slim applications with
the Rust programming language. It is:

  • Fast: Tokio's zero-cost abstractions give you bare-metal
    performance.

  • Reliable: Tokio leverages Rust's ownership, type system, and
    concurrency model to reduce bugs and ensure thread safety.

  • Scalable: Tokio has a minimal footprint, and handles backpressure
    and cancellation naturally.

Crates.io
MIT licensed
Build Status
Discord chat

Website