#sleep #control-flow #accuracy #intermittent

isleep

间歇性睡眠并返回中间的控制流程

6 个版本

0.3.2 2023年9月13日
0.3.1 2023年9月13日
0.2.1 2023年9月13日
0.1.0 2023年9月3日

#4#accuracy

Apache-2.0

7KB

isleep

提供间歇性睡眠的函数 snoozeaccurate_snooze,它们返回中间的控制流程。

依赖于平台对 std::timestd::thread 的支持。

示例

// Sleeping for a total of 1 s
let total = std::time::Duration::from_secs(1);
// Interrupting the sleep after 100 ms
let len = std::time::Duration::from_millis(100);
// Starting now
let start = std::time::Instant::now();
// Sleeps for `total` in steps up to `len`
// Wont sleep longer than `total` within accuracy of the platform
while snooze(start, total, len) {
   println!("Checking if the user pressed CTRL+C...");
}

准确性

准确性取决于平台,对于短时间(例如,Windows上的小于20 ms)可能较低。可以使用 accuracy 功能和 accurate_snooze 来提高准确性,后者利用 spin_sleep

cargo添加 isleep --功能=accuracy


lib.rs:

提供间歇性睡眠的函数 snoozeaccurate_snooze,它们返回中间的控制流程。

依赖于平台对 std::timestd::thread 的支持。

示例

// Sleeping for a total of 1 s
let total = std::time::Duration::from_secs(1);
// Interrupting the sleep after 100 ms
let len = std::time::Duration::from_millis(100);
// Starting now
let start = std::time::Instant::now();
// Sleeps for `total` in steps up to `len`
// Wont sleep longer than `total` within accuracy of the platform
while isleep::snooze(start, total, len) {
   println!("Checking if the user pressed CTRL+C...");
}

准确性

准确性取决于平台,对于短时间(例如,Windows上的小于20 ms)可能较低。可以使用 accuracy 功能和 accurate_snooze 来提高准确性,后者利用 spin_sleep

cargo添加 isleep --功能=accuracy

依赖关系

~0–6.5MB
~29K SLoC