Tokio

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

Github stars Tracking Chart

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,没有任何附加条款或条件。


Main metrics

Overview
Name With Ownertokio-rs/tokio
Primary LanguageRust
Program languageRust (Language Count: 2)
PlatformLinux, Mac, Windows
License:MIT License
所有者活动
Created At2016-09-09 22:31:36
Pushed At2025-07-14 08:28:02
Last Commit At2025-07-14 16:28:02
Release Count360
Last Release Nametokio-1.46.1 (Posted on 2025-07-04 12:38:19)
First Release Name0.1.0 (Posted on 2016-09-09 22:04:16)
用户参与
Stargazers Count29.1k
Watchers Count314
Fork Count2.7k
Commits Count4.1k
Has Issues Enabled
Issues Count2494
Issue Open Count334
Pull Requests Count3554
Pull Requests Open Count54
Pull Requests Close Count619
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private

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