rust异步

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>>
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容