Function std::thread::sleep

1.4.0 · source ·
pub fn sleep(dur: Duration)
Expand description

使当前线程休眠至少指定的时间。

由于调度细节或平台相关的功能,线程的睡眠时间可能比指定的持续时间更长。它永远不会少睡。

该函数正在阻塞,因此不应在 async 函数中使用。

特定于平台的行为

在 Unix 平台上,底层的系统调用可能会由于虚假唤醒或信号处理程序而中断。 为了确保至少在指定的持续时间内发生睡眠,此函数可以多次调用该系统。 不支持纳秒级睡眠精度的平台会将 dur 舍入为最接近的睡眠时间粒度。

目前,在 Unix 平台上指定零持续时间会立即返回,而不会调用底层 nanosleep syscall,而在 Windows 平台上,始终调用底层 Sleep syscall。

如果要产生当前时间片,则可能需要使用 yield_now

Examples

use std::{thread, time};

let ten_millis = time::Duration::from_millis(10);
let now = time::Instant::now();

thread::sleep(ten_millis);

assert!(now.elapsed() >= ten_millis);
Run