< 返回版块

jellybobbin 发表于 2019-10-22 16:35

Tags:async crate tokio runtime async-std async-task futures

各个rust 异步库到底是个什么关系

我现在知道的有 futures-preview tokio runtime async-std async-task;这些库到底是个什么关系?哪种情况用哪个?还是可以每一个都同时用在一个项目中,每个库是为了解决什么问题? 眼都花了.

评论区

写评论
Ryan-Git 2019-10-22 18:18

其实主要是 async-std 和 tokio 的冲突,其他库都只负责自己的事情。

我觉得理想状态是 async-std 就对标 std,tokio 基于 async-std 提供更高级的抽象。不需要重复去做 scheduler。。

作者 jellybobbin 2019-10-22 18:00

tokio我只知道很出名,但没有去仔细学过,最近在看async-std,感觉很丝滑.只是看到这些异步库,不知道历史的,是真的有点晕.多谢谢大大的解答. 对以下内容的回复:

Mike Tang 2019-10-22 17:43

async-std 与 tokio 是竞争,可替代关系。

Mike Tang 2019-10-22 17:42

futures是基础库,已经进入官方,配合实现 async/await 语法。

tokio是rust社区,历史最悠久的异步基础框架,属于3方库。由于历史早,目前rust生态绝大多数需要用到异步的库,都是基于tokio的。

async-std是新出的完全利用async/await从头写起的库,特点是与标准库std的api使用方法尽量保持一致。async-task 是与 async-std 配合的组件。目前 async-std 发展非常迅速。

tokio 和 async-std 的底层都是 futures + mio。

需要提的是,前rust异步生态工作组的几位大佬,全力在写 async-std 的代码。而tokio的作者,至少在开发节奏上,曾经跟rust官方有一小点冲突。

从我个人来讲,未来可能更看好 async-std。

1 共 4 条评论, 1 页