1 个不稳定版本

0.1.0 2020年9月12日

#16#系统时钟

MIT 协议

8KB
123

timeouts

os_clock上设置超时。当前依赖于具有多线程tokio运行时。


lib.rs:

os_clock上设置超时。

依赖于具有多线程tokio运行时。

示例

use std::time::Duration;
use std::sync::Arc;
use std::sync::atomic::{AtomicUsize, Ordering};
use os_clock::ThreadCPUClock;
use tokio;

#[tokio::main]
async fn main() {
    // must be called inside a Tokio runtime.
    let timer = timeouts::Timer::<ThreadCPUClock>::spawn();

    let thread_handle = std::thread::spawn(move || {
        let spinlock = Arc::new(AtomicUsize::new(1));
        let spinlock_clone = spinlock.clone();

        let timeout = &timer.set_timeout_on_current_thread_cpu_usage(Duration::from_millis(2), move || {
            spinlock_clone.store(0, Ordering::Relaxed);
        });

        let mut i = 0;

        while spinlock.load(Ordering::Relaxed) != 0 {
          i += 1;
        }

        println!("Num iters: {:?}", i);
    });

    thread_handle.join();
}

依赖项

~5–7.5MB
~135K SLoC