Tokio 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
Tokio 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
Tokio 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !

软件简介

Tokio 是 Rust 中的异步编程框架,它将复杂的异步编程抽象为 Futures、Tasks 和 Executor,并提供了 Timer 等基础设施。Tokio 快速、可靠,且可扩展。

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

  • 多线程、工作窃取(work-stealing)的 task scheduler

  • 由操作系统的事件队列(epoll,kqueue,IOCP 等)支撑的 reactor 。

  • 异步 TCP 和 UDP 套接字。

这些组件提供构建异步应用所需的运行时组件。

示例

extern crate tokio;

use tokio::prelude::*;
use tokio::io::copy;
use tokio::net::TcpListener;

fn main() {
    // Bind the server's socket.
    let addr = "127.0.0.1:12345".parse().unwrap();
    let listener = TcpListener::bind(&addr)
        .expect("unable to bind TCP listener");

    // Pull out a stream of sockets for incoming connections
    let server = listener.incoming()
        .map_err(|e| eprintln!("accept failed = {:?}", e))
        .for_each(|sock| {
            // Split up the reading and writing parts of the
            // socket.
            let (reader, writer) = sock.split();

            // A future that echos the data and returns how
            // many bytes were copied...
            let bytes_copied = copy(reader, writer);

            // ... after which we'll print what happened.
            let handle_conn = bytes_copied.map(|amt| {
                println!("wrote {:?} bytes", amt)
            }).map_err(|err| {
                eprintln!("IO error {:?}", err)
            });

            // Spawn the future as a concurrent task.
            tokio::spawn(handle_conn)
        });

    // Start the Tokio runtime
    tokio::run(server);
}
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (5)

加载中
打分: 力荐
Rust 异步网络编程的基础。性能高而且还算易用。
2018/09/28 16:24
回复
举报
这东西也有水军?
2018/07/20 22:08
回复
举报
打分: 力荐
tokyo, hot?
2018/07/19 15:21
回复
举报
打分: 力荐
好东西
2018/07/19 12:13
回复
举报
打分: 力荐
很多Rust的网络方面的应用都用tokio
2018/07/19 09:28
回复
举报
更多评论
发表于开发技能专区
2020/12/25 08:14

Tokio 1.0 发布,Rust 异步编程框架

Tokio 1.0 稳定版本已发布,Tokio 是 Rust 的异步 runtime,可用于编写快速、可靠的网络应用。Tokio 还提供用于 TCP、UDP、计时器、多线程、工作窃取算法(work-stealing)调度等的 API。 Tokio 团队表示,虽然 Tokio 从四年前刚诞生起就一直在不断发展,不过出现真正的显著变化是在一年前,因为 Rust 在当时才正式支持 async/await。 示例代码 使用 Tokio 编写的基本 TCP echo 服务器: use tokio::net::TcpListener; use to...

4
23
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
2020/06/03 19:32

rust tokio mpsc 异步发送数据

启动两个异步任务,一个阻塞在键盘输入。一个间歇的读取通道,有数据就输出。在快速输入的时候会卡住,因为 mpsc 的 buffer 设置为了 5。 代码如下: ``` use std::io; use tokio::task; use tokio::sync::mpsc; use std::io::{Read, BufRead}; #[tokio::main] async fn main() { // input let (mut tx_in, mut rx_in) = mpsc::channel::(5); task::spawn(async move { loop { let line = task::spawn_blocking(move || { let ...

0
0
发表了博客
2018/07/19 10:21

Tokio,Rust异步编程实践之路

缘起 在许多编程语言里,我们都非常乐于去研究在这个语言中所使用的异步网络编程的框架,比如说Python的 Gevent、asyncio,Nginx 和 OpenResty,Go 等,今年年初我开始接触 Rust,并被其无 GC、内存安全、极小的运行时等特性所吸引,经过一段时间的学习,开始寻找构建实际项目的解决方案,很快 mio、tokio 等框架进入了我的视野,于是开始从更加底层的 mio 出发实验。 https://github.com/Hevienz/mio_test/blob/master/src/ma...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
5 评论
38 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部