跳到主要内容

sleep

搜索

函数 sleep 

源代码
pub fn sleep(duration: Duration) -> Sleep 
展开描述

等待直到 duration 已过。

等效于 sleep_until(Instant::now() + duration)std::thread::sleep 的异步模拟。

在等待 sleep future 完成时不会执行任何工作。Sleep 以毫秒粒度运行,不应用于需要高分辨率定时器的任务。实现是平台特定的,某些平台(特别是 Windows)将提供大于 1 毫秒分辨率的定时器。

若要按计划定期运行某些任务,请参阅 interval

§Cancellation

取消 sleep 实例的方法是 drop 返回的 future。无需进行额外的清理工作。

§示例

等待 100 毫秒并打印 “已过 100 毫秒”。

use tokio::time::{sleep, Duration};

sleep(Duration::from_millis(100)).await;
println!("100 ms have elapsed");

有关更多示例,请参阅 Sleep 类型的文档。

§恐慌

如果未设置当前定时器,此函数会发生 panic。

Builder::enable_timeBuilder::enable_all 未包含在 builder 中时,可能会触发 panic。

每当在 Tokio 运行时之外创建定时器时,它也可能会发生 panic。这就是 rt.block_on(sleep(...)) 会发生 panic 的原因,因为该函数在运行时之外执行。而 rt.block_on(async {sleep(...).await}) 不会 panic,这是因为将函数包装在 async 中使其变为惰性的,从而可以在运行时内成功执行而不会发生 panic。