#delay #tokio #back #instantiating #target #resolution #postponable

tokio-postponable-delay

一个可以在不实例化新延迟的情况下推后的 tokio 延迟

1 个不稳定版本

0.1.0 2020年5月23日

53#resolution

MPL-2.0 许可协议

7KB
113 行(不包括注释)

一个可以推后的 tokio 延迟

它如何工作?

与正常的 tokio::time::Delay 类似,但在解决之前会检查其目标解决时间是否已移动,并在需要时重新安排自己。

目前,这通过丢弃之前的 Delay 并实例化一个新的来重新安排自己。

我该如何使用它?

async fn typical_usage() {
    let target = std::time::Instant::now() + std::time::Duration::from_millis(10);
    let delay = ResettableDelay::new(target);
    let handle = delay.get_handle();
    std::thread::spawn(move || {
        std::thread::sleep(std::time::Duration::from_millis(5));
        let target = std::time::Instant::now() + std::time::Duration::from_millis(10);
        handle.postpone(target)
    });
    delay.await;
}

依赖项

~5MB
~86K SLoC