3 个不稳定版本
0.2.1 | 2023年8月3日 |
---|---|
0.2.0 | 2022年10月26日 |
0.1.0 | 2022年10月25日 |
#28 in #actions
17KB
183 行
注意
此crate在跟踪时间方面非常不可靠。除此之外,如果您尝试在tokio中使用Thread Clock,程序可能会崩溃。
Thread Clock是我编写的一个程序,旨在获得更多编写代码的经验。因此,它可能不太高效或编写良好。
Thread Clock
Thread Clock允许您创建一个时钟,该时钟可以提供自启动以来经过的滴答数。
此时钟的目的是允许线程之间同步动作,因为时钟可以被克隆到任何地方运行。然而,由于每个滴答大约有+1.4ms的漂移,因此使用此时钟进行实际时间跟踪可能有点不确定。
示例
使用时钟进行计时
use thread_clock::Clock;
fn main() {
let mut clock = Clock::new().unwrap();
clock.start();
clock.wait_for_time(50);
let time = clock.stop().unwrap();
assert_eq!(time, 51);
}
使用时钟进行线程同步
use thread_clock::Clock;
use std::thread;
fn main() {
let mut clock = Clock::new().unwrap();
clock.start();
let mut time_receiver = clock.spawn_receiver();
let handle = thread::spawn(move || {
for _ in 0..5 {
time_receiver.wait_for_tick();
}
let time = time_receiver.time();
assert_eq!(time, 5);
});
for _ in 0..5 {
clock.wait_for_tick();
}
let time = clock.time();
assert_eq!(time, 5);
let _ = handle.join();
let final_time = clock.stop().unwrap();
assert_eq!(final_time, 6);
}
依赖项
~2.4–4MB
~66K SLoC