3个版本
0.1.2 | 2024年5月27日 |
---|---|
0.1.1 | 2024年5月25日 |
0.1.0 | 2024年5月25日 |
#568 in 异步
26KB
210 代码行
Tokio延迟队列
为Tokio运行时提供的异步延迟队列。
特性
- 多消费
- 多生产
- 固定队列大小
- 原子弹出与弹出未来取消
示例
let queue = DelayedQueue::new(16);
// Push
queue.push(1, Duration::from_secs(1)).await;
queue.push(1, Duration::from_secs(2)).await;
// Pop
let v = queue.pop().await;
assert_eq!(v, 1);
// Other future
let join = tokio::spawn({
let queue = queue.clone();
async move {
// Cancelled 1
let dropped_future = queue.pop();
drop(dropped_future);
// Cancelled 2
let dropped_future = queue.pop();
drop(dropped_future);
// Pop
let v = queue.pop().await;
assert_eq!(v, 1);
// Pop
let v = queue.pop().await;
assert_eq!(v, 1);
}
});
// Push
queue.push(1, Duration::from_secs(2)).await;
join.await.unwrap();
依赖
~2.7–9MB
~65K SLoC