Asynchronous Tokio反应堆是否在每个组合器之间轮询所有可能的poll()函数?

Asynchronous Tokio反应堆是否在每个组合器之间轮询所有可能的poll()函数?,asynchronous,rust,rust-tokio,Asynchronous,Rust,Rust Tokio,对poll的调用永远不能阻塞,否则异步内核执行的整个线程将被阻塞,停止所有可能的因果关系,直到阻塞函数返回 我在反应堆上生成了一个未来,有一系列的组合体,比如my\u future.and\u then(…).map(…).then(…) 反应器轮询未来,然后在执行下一个和_然后组合器之前,反应器是否迭代所有其他未来,检查它们是否准备就绪,或者反应器是否遵循我的未来和_然后(…).map(…)的所有组合步骤。然后(…) 我问这个问题是因为考虑到异步核心的因果关系,知道如何设计我的程序很重要。据异

poll
的调用永远不能阻塞,否则异步内核执行的整个线程将被阻塞,停止所有可能的因果关系,直到阻塞函数返回

我在反应堆上生成了一个未来,有一系列的组合体,比如
my\u future.and\u then(…).map(…).then(…)

反应器轮询未来,然后在执行下一个
和_然后
组合器之前,反应器是否迭代所有其他未来,检查它们是否准备就绪,或者反应器是否遵循
我的未来和_然后(…).map(…)的所有组合步骤。然后(…)


我问这个问题是因为考虑到异步核心的因果关系,知道如何设计我的程序很重要。

据异步执行器所知,没有中间步骤。每一个组合器都消耗了以前的未来,产生了一个全新的未来。最后,将一个未来交给执行者,它根据需要对该未来调用
poll

由每一个父期货决定是否以及何时轮询任何子期货,但这只能在轮询父期货时发生

另见:


啊,那么建立因果链的力量取决于编码者,而不一定是反应器吗?@ThomasBraun如果我理解你的术语,那么是的。老实说,我很难用其他方式去想象。遗嘱执行人如何知道未来A需要调用孩子未来B,而不是孩子C,等等?请记住,文档链接到相应的源代码,因此您可以看到例如是如何。