3 个版本
0.1.2 | 2024 年 7 月 24 日 |
---|---|
0.1.1 | 2024 年 7 月 19 日 |
0.1.0 | 2024 年 7 月 19 日 |
#227 in 操作系统
1,598 每月下载量
27KB
345 行
suspend-time
Suspend-time 是一个跨平台的、不受挂起影响的单调时钟,用 Rust 编写!
它允许系统挂起(例如,当用户在 Windows 上关闭笔记本电脑时)不会影响 Instant
持续时间和超时!
示例
SuspendUnawareInstant
的使用示例
use std::{thread, time};
use suspend_time::{SuspendUnawareInstant};
fn main() {
// If you used std::time::Instant here and you suspend the system on windows,
// it will print that more than 3 seconds (circa July 2024).
// With SuspendUnawareInstant this has no effect.
let instant = SuspendUnawareInstant::now();
let three_secs = time::Duration::from_secs(3);
thread::sleep(three_secs);
println!("{:#?}", instant.elapsed());
}
suspend_time::timeout
的使用示例
use std::time::Duration;
#[tokio::main]
async fn main() {
// If you suspend the system during main's execution, Tokio will time
// out even though it only slept for 1 second. suspend_time::timeout does not.
let _ = suspend_time::timeout(
Duration::from_secs(2),
suspend_time::sleep(Duration::from_secs(1)),
).await;
}
Instant
与 SuspendUnawareInstant
这个库是 std::time::Instant
的直接替代品,因此您无需担心更新您的代码。
与标准库中 Instant
的实现类似,但它在所有由该库支持的平台上始终对系统挂起保持无知。
历史上,这已在标准库中不一致,Windows 允许在系统挂起/休眠时时间流逝,然而 Unix 系统在系统挂起期间并不“流逝时间”。在这个库中,当在任何平台上系统挂起时,时间 永远不会流逝。
此瞬间实现是
- 跨平台(Windows,Unix)
- 单调(时间永远不会倒退)
- 不受挂起影响(当您将计算机休眠时,“时间”不会流逝。)
依赖项
~13–23MB
~297K SLoC