1 个不稳定版本
0.1.0 | 2020年9月12日 |
---|
#16 在 #系统时钟
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