pub fn sleep_from(from: XwTm, dur: XwTm) -> (XwEr, XwTm)
Expand description
线程从一个时间起点睡眠到另一个时间点
调用此方法前,需要先确定一个时间起点 from
,可以通过 xwtm::now()
获取当前的系统时间作为起点。
唤醒时间为 from
+ dur
。
此方法会将线程唤醒时的系统时间返回,可作为下一次调用的时间起点。
由此,循环调用,可以形成周期为 dur
,更为精确的周期性睡眠唤醒。
§参数说明
- from: 时间起点
- dur: 期望被唤醒的时间增量
§返回值 (rc, from)
- rc
- 0: 睡眠成功
- -EINTR: 睡眠被中断
- -ETIMEDOUT: 时间点是过去
- from: 线程唤醒时的系统时间
§上下文
- 线程
§示例
use use xwrust::xwos::cthd;
use use xwrust::xwtx;
let mut from = xwtm::now();
loop {
let mut (rc, from) = cthd::sleep_from(from, xwtm::s(1)); // 从from开始睡眠1s
}