| Crates.io | wheeltimer |
| lib.rs | wheeltimer |
| version | 0.2.0 |
| created_at | 2025-05-26 07:38:08.559436+00 |
| updated_at | 2025-06-06 07:08:57.723749+00 |
| description | wheelTimer is Netty's HashedWheelTimer implementation based on Rust |
| homepage | |
| repository | https://github.com/cyj0122/wheeltimer |
| max_upload_size | |
| id | 1689070 |
| size | 45,993 |
A high-performance asynchronous time wheel-based timer implementation in Rust, inspired by Netty's HashedWheelTimer.
This crate provides a scalable and thread-safe way to schedule delayed tasks using the time wheel algorithm, ideal for use cases such as connection timeouts, heartbeat checks, or any system requiring large numbers of scheduled events.
Arc, RwLock, and MutexAdd this to your Cargo.toml
[dependencies]
wheeltimer = "0.2.0"
use wheeltimer::WheelTimer;
use std::time::Duration;
#[tokio::main]
async fn main() {
// Create a new timer with 10ms tick duration and 1024 buckets
let timer = WheelTimer::new(Duration::from_millis(10), 1024, 100000).unwrap();
// Start the timer
timer.start().await;
// Schedule a timeout after 2 seconds
let timeout = timer.new_timeout(Duration::from_secs(2),
async move {
println!("A delayed task is executed!");
}
).await.unwrap();
// Wait for the task to execute
tokio::time::sleep(Duration::from_secs(3)).await;
// Stop the timer
timer.stop().await;
}
WheelTimer::new(tick_duration, ticks_per_wheel, max_pending_timeouts) โ Creates a new timer..start() โ Starts the internal worker thread..new_timeout(delay, task) โ Schedules a task to run after a delay..stop() โ Stops the timer and cancels all pending timeouts..cancel() on Timeout โ Cancels an individual timeout before it fires.You can view the full documentation online:
๐ https://docs.rs/wheeltimer
Or build it locally:
cargo doc --open
Run tests:
cargo test
Contributions are welcome! Feel free to open issues or submit pull requests on GitHub.
Licensed under either of: