如果我已经有像epoll / kqueue / IOCP这样的非阻塞IO,为什么我需要异步/等待?

问题描述 投票:0回答:1

我有使用非阻塞IO库epoll及其高级抽象libuv的经验,因此,当我开始学习Rust时,我寻找了Rust的等效项并找到了Mio。 Mio以我对非阻塞式IO的理解和熟悉的方式工作。我可以轻松地使用这种API使用多个线程甚至单个线程来构建高性能服务器应用程序。

Rust 1.39带来了async / await语法。我已经阅读了一些文章和文档,感觉就像协程。我了解.await可用于让CPU在同一线程中执行其他操作,但是没有简单的方法来动态调度代码在该线程中运行,它无法像epoll这样的事件方式工作,我可以通过它预先注册事件,并在事件发生时得到通知。

async / await的打开和读取文件的示例对我来说没有意义,因为在该示例中,在.await之后,我除了要做[内容]以外没有其他事情,所以我仍然处于阻止状态,根本没有async如果我使用像Mio或

不安全]这样的非阻塞IO> epoll,我还需要async / await吗?如果不是,在什么情况下应该使用async / await

我有使用非阻塞IO库epoll及其高级抽象libuv的经验,因此,当我开始学习Rust时,我寻找了Rust的等效项并找到了Mio。宇达电通的工作方式是我...

rust async-await nonblocking
1个回答
3
投票
如果我使用像Mio或

unsafe

这样的非阻塞IO,epoll,我仍然需要async / await吗?
© www.soinside.com 2019 - 2024. All rights reserved.