Function std::thread::park_timeout1.4.0[][src]

pub fn park_timeout(dur: Duration)
Expand description

除非直到当前线程的 token 可用或达到指定的持续时间 (否则可能会虚假唤醒),否则将阻塞。

该函数的语义与 park 等效,除了线程被阻塞的时间不超过 dur。 由于诸如抢占或平台差异之类的异常可能不会导致等待的最大时间恰好为 dur 长,因此该方法不应用于精确的计时。

有关更多详细信息,请参见 park 文档

平台特定的行为

不支持纳秒级睡眠精度的平台会将 dur 舍入为最接近的睡眠时间粒度。

Examples

等待超时完全到期:

use std::thread::park_timeout;
use std::time::{Instant, Duration};

let timeout = Duration::from_secs(2);
let beginning_park = Instant::now();

let mut timeout_remaining = timeout;
loop {
    park_timeout(timeout_remaining);
    let elapsed = beginning_park.elapsed();
    if elapsed >= timeout {
        break;
    }
    println!("restarting park_timeout after {:?}", elapsed);
    timeout_remaining = timeout - elapsed;
}
Run