当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Rust park_timeout用法及代码示例


本文简要介绍rust语言中 Function std::thread::park_timeout 的用法。

用法

pub fn park_timeout(dur: Duration)

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

这个函数的语义等价于 park ,除了线程将被阻塞大约不超过dur。由于抢占或平台差异等异常情况可能不会导致最大等待时间精确为dur long,因此不应将此方法用于精确计时。

有关更多详细信息,请参阅park documentation

特定于平台的行为

不支持纳秒级睡眠精度的平台将 dur 向上舍入到它们可以睡眠的最接近的时间粒度。

例子

等待超时完全到期:

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;
}

相关用法


注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 Function std::thread::park_timeout。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。