Crate debounce_fltk
source ·Expand description
基于tokio异步上下文防抖器和超时计时器。
主要用于限流执行任务,特别是这些任务需要运行在tokio的异步上下文环境。
在每个限流周期内,最多执行一次预定任务。
必须通过update_param
方法更新任务参数,才能激活任务。
任务参数在执行后就被消耗
用法示例:
use std::thread;
use std::time::{Duration, Instant};
use debounce_fltk::TokioDebounce;
let start = Instant::now();
let mut debounced_fn = TokioDebounce::new_debounce(move |param: String| {
println!("经过 {:?}, 执行任务,入参:{}", start.elapsed(), param);
}, Duration::from_millis(1000), false);
for i in 0..50 {
debounced_fn.update_param(i.to_string());
tokio::time::sleep(Duration::from_millis(200)).await;
}
// 每隔1000毫秒打印一次任务信息。
防抖器结构体实例被创建后,将会通过tokio工作线程或协程无限循环检查新任务,在每个duration
参数指定的周期内检查一次,
其余时间处于休眠状态。
超时计时器用于在超过设定时限后执行任务。
Structs§
- 超时后执行的任务。
在超时前调用update_param
方法更新参数。
在超时前调用touch
方法重新计时。
这个任务计时器不能精准计时,可能会有微秒到毫秒级的误差。 - 基于tokio异步上下文防抖器。
Enums§
- 超时任务类型。
Functions§
- 在一段程序中的某个位置设置一个限流检查点,凡是需要通过该屏障的执行逻辑都要被检查是否超出节流限制,在一个有限的时段内只允许第一个执行逻辑通过。 若超出节流限制,则应结束该段逻辑。