當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。