美文网首页
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