#pingora #non-blocking #async #async-networking #async-io

pingora-timeout

针对Tokio运行时的高效异步定时器和超时系统

4个版本 (2个重大更改)

0.3.0 2024年7月12日
0.2.0 2024年5月10日
0.1.1 2024年4月18日
0.1.0 2024年2月27日

#612 in 异步

Download history • Rust 包仓库 1029/week @ 2024-04-20 • Rust 包仓库 3457/week @ 2024-04-27 • Rust 包仓库 2499/week @ 2024-05-04 • Rust 包仓库 2017/week @ 2024-05-11 • Rust 包仓库 2993/week @ 2024-05-18 • Rust 包仓库 3650/week @ 2024-05-25 • Rust 包仓库 3360/week @ 2024-06-01 • Rust 包仓库 3259/week @ 2024-06-08 • Rust 包仓库 2841/week @ 2024-06-15 • Rust 包仓库 4020/week @ 2024-06-22 • Rust 包仓库 5302/week @ 2024-06-29 • Rust 包仓库 4754/week @ 2024-07-06 • Rust 包仓库 2986/week @ 2024-07-13 • Rust 包仓库 3393/week @ 2024-07-20 • Rust 包仓库 4510/week @ 2024-07-27 • Rust 包仓库 2922/week @ 2024-08-03 • Rust 包仓库

每月14,494次下载
用于 21 个crate (直接使用7个)

Apache-2.0

23KB
399

tokio::time::timeout的替代品,效率更高。

类似于tokio::time::timeout,但在频繁创建和取消超时的繁忙并发IO上效率更高。

此crate提供了以下优化:

  • 超时在Future第一次挂起时懒加载其计时器。
  • 创建和取消超时没有全局锁。
  • 超时计时器四舍五入到下一个10ms滴答,并且计时器在具有相同截止日期的所有超时之间共享。

基准测试

总时间438.302µs,平均每次迭代4ns

与Tokio timeout()相比

总时间10.716192ms,平均每次迭代107ns

依赖项

约3.5–10MB
约91K SLoC