美文网首页
rust异步

rust异步

作者: Jesse_996 | 来源:发表于2020-05-05 01:01 被阅读0次

Future Trait

Future是rust异步的核心,代表一个将来会产生值的一个东东。调用poll方法可以让future朝着完成进行,如果完成了就返回Pool::Ready(result),否则返回Poll::Pending并加到事件循环队列中等待再次被wake方法调用。

Waker

Waker有一个wake()方法,用来告诉执行器需要执行相关的任务,就会调用相关的poll方法。

Executor

rust的future都是懒执行的,就是说除非用主动推动完成才会完成,否则不会做任何事。一个推动future完成的方法是在async方法中用.await,但最外层的future如何完成呢?这就需要一个Future executor
Executor通过调用poll方法执行一系列最外层的future。典型的,一旦一个future开始了,Executor就会对之调用poll方法。当future暗示他们准备好了被调用wake()更进一步,他们就会被放到队列中等待再次被poll,不断重复直至完成。
先看看Executor的定义:

struct Executor {
    ready_queue: Receiver<Arc<Task>>
}

相关文章

网友评论

      本文标题:rust异步

      本文链接:https://www.haomeiwen.com/subject/gmamthtx.html