跳到主要内容

yield_now

搜索

函数 yield_now 

源代码
pub async fn yield_now()
展开描述

将执行权让回 Tokio 运行时。

任务通过 await yield_now() 让步,并可能在该 future 完成时恢复(无输出)。当前任务将作为挂起任务重新添加到挂起队列的末尾。任何其他挂起任务都将被调度。任务继续不需要其他唤醒。

另请参阅 task 模块中的使用示例。

§Non-guarantees

如果调用栈中此函数之上有任何特殊的组合器,则该函数可能不会一直让步到执行器。例如,如果 tokio::select! 在与 yield_now() 相同的 poll 期间有另一个分支完成,则让步不会一直传播到运行时。

通常不能保证运行时的行为符合你的预期,特别是在调用 yield_now() 后决定下一个调度哪个任务时。尤其运行时可能选择立即再次 poll 刚刚运行 yield_now() 的任务,而不先 poll 任何其他任务。例如,运行时不会在每次 poll 任务之间驱动 IO 驱动,这可能导致运行时立即再次 poll 当前任务,即使有另一个任务可以通过 IO 驱动的通知取得进展。

一般来说,更改运行时 poll 任务的顺序不被视为破坏性更改,你的程序应该在运行时以任何顺序 poll 你的任务时都是正确的。