我有使用非阻塞IO库epoll
及其高级抽象libuv
的经验,因此,当我开始学习Rust时,我寻找了Rust的等效项并找到了Mio。 Mio以我对非阻塞式IO的理解和熟悉的方式工作。我可以轻松地使用这种API使用多个线程甚至单个线程来构建高性能服务器应用程序。
Rust 1.39带来了async
/ await
语法。我已经阅读了一些文章和文档,感觉就像协程。我了解.await
可用于让CPU在同一线程中执行其他操作,但是没有简单的方法来动态调度代码在该线程中运行,它无法像epoll
这样的事件方式工作,我可以通过它预先注册事件,并在事件发生时得到通知。
不安全]这样的非阻塞IO> async
/ await
的打开和读取文件的示例对我来说没有意义,因为在该示例中,在.await
之后,我除了要做[内容]以外没有其他事情,所以我仍然处于阻止状态,根本没有async。如果我使用像Mio或epoll
,我还需要async
/ await
吗?如果不是,在什么情况下应该使用async
/ await
?
如果我使用像Mio或unsafe
这样的非阻塞IO,epoll
,我仍然需要async
/await
吗?