Rust 异步编程框架 Tokio

Rust 异步编程框架 Tokio

MIT
Rust 查看源码»
跨平台
2018-07-18
Hevienz

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);
}
的码云指数为
超过 的项目
加载中

评论(5)

MikeManilone
MikeManilone
Rust 异步网络编程的基础。性能高而且还算易用。
这东西也有水军?
不存在的会员
tokyo, hot?
王艳青
王艳青
好东西
MingjunYang
MingjunYang
很多Rust的网络方面的应用都用tokio

暂无资讯

暂无问答

Linux高性能服务器编程模式

本文时间:2018-11-21,作者:krircc, 简介:天青色 欢迎向Rust中文社区投稿,投稿地址,好文将在以下地方直接展示 Rust中文社区首页 Rust中文社区Rust文章栏目 知乎专栏Rust语言 高性能服务器...

2018/11/22 08:36
22
0
七月新增开源项目:你学习的速度跟得上前端造轮子的速度吗?

每月新增开源项目。顾名思义,每月更新一期。我们会从社区上个月新收录的开源项目中,挑选出有价值的、有用的、优秀的、或者好玩的开源项目来和大家分享。数量不多,但我们力求推荐的都是精品...

2018/08/12 21:54
5K
6
Nervos Network 2018 年 12 月月报

亲爱的 Nervos 粉丝们: 新年快乐,Nervos CKB 已经开源一个月的时间,在此期间,我们不断收到来自各方的问候和大家对进程的关心,非常感谢大家对 Nervos 的支持。为此,我们有义务告诉大家这...

01/09 10:48
11
0
好程序员前端分享什么是Deno,它与Node.js的区别

  好程序员前端分享什么是Deno,它与Node.js的区别,Node.js的创建者Ryan Dahl花了一年半的时间研究deno,这是一个新的JavaScript运行时,可以解决Node的所有固有问题。 不要误解我的意思,...

07/29 16:00
4
0
RustCon Asia 实录 | Distributed Actor System in Rust

作者介绍: Zimon Dai,阿里云城市大脑 Rust 开发工程师。 本文根据 Zimon 在首届 RustCon Asia 大会上的演讲整理。 大家好,我今天分享的是我们团队在做的 Distributed Actor System。首先我...

05/14 11:03
35
0
TiDB 3.0.0-rc.1 Release Notes

2019 年 5 月 10 日,TiDB 发布 3.0.0-rc.1 版,对应的 TiDB-Ansible 版本为 3.0.0-rc.1。相比 3.0.0-beta.1 版本,该版本对系统稳定性、易用性、功能、优化器、统计信息以及执行引擎做了很多...

05/13 10:48
20
0

没有更多内容

加载失败,请刷新页面

没有更多内容

返回顶部
顶部