对poll
的调用永远不会阻塞,否则异步核心执行的整个线程将被阻塞,停止所有可能的因果关系,直到阻塞函数返回。
我在 react 堆上生成了一个 future,并且有一系列组合器,例如 my_future.and_then(…).map(…).then(…)
。
react 器轮询 future ,然后在执行下一个 and_then
组合器之前, react 器是否迭代所有其他 future ,检查它们是否准备好,或者 react 器是否继续执行my_future.and_then(…).map(…).then(…)
的所有组合步骤?
我问这个问题是因为考虑到异步核心的因果关系,了解如何设计我的程序非常重要。
最佳答案
据异步执行器所知,没有中间步骤。每个组合器消耗以前的 future ,产生一个全新的 future 。最后,一个 future 被交给执行者,并根据需要调用该 future 的 poll
。
由每个父 future 决定是否以及何时对任何子 future 进行轮询,但这只能在对父 future 进行轮询时发生。
另请参阅:
关于asynchronous - Tokio react 器是否轮询每个组合器之间所有可能的 poll() 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56757601/