17.rust异步库tokio入门

一、前言

异步是一个非常强大特性,它有相当多的实现模型,其中比较知名的“协程”,go语言的并发编程就是借助的“协程”这一概念达到了非常高的性能,

不理解协程的可以查看另外一篇文章:协程与线程

在这众多实现模型中,最基本就是多线程模型了,由于其是系统本身底层提供的,所以写起来、理解起来都会较为简单。

还有就是事件驱动模型,和windows消息机制差不多,不理解的可以参考:windows编程入门

除了上面三个之外,另一个常用的异步模型便是async/await

它的主要麻烦之处在于其底层实现非常复杂,但好在这并不需要我们自己去实现。直接使用即可。

第二个麻烦之处在于其不好理解,这便是本章要做的事情了。

由于rust语言本身提供了awaitasync以及Future这三个async/await模型最基础的特性,所以使得实现该模型变得更加容易。

rust中异步库有很多,但目前性能最好、效率最高、最流行的库是一个叫tokio的。

从一张网上流传甚广、据说是官方测试各种异步框架效率也能看出tokio的恐怖之处:

image-20240203085743982

该图展示的大概是各种异步框架所实现的最小http服务器单位时间所能处理的请求数量。

所以本章也将直接以tokio为例对rust中异步的使用进行介绍。

二、基本理解与使用

首先你需要下载tokio,在配置文件中添加下面这行代码:

tokio = { version = "1.36.0", features = ["full"] }

它的基本使用方法如下:

fn main() {
    let rt = tokio::runtime::Runtime::new().unwrap();
    rt.block_on(async {
        println!("hello tokio");
    })
}

看起来似乎很复杂,这里对其简单解析一下:

  1. 首先我们需要创建一个tokio的“运行时”,也就是上面的rt变量,它将成为整个程序的异步基础。
作者:余识
全部文章:0
会员文章:0
总阅读量:0
c/c++pythonrustJavaScriptwindowslinux