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§

  • 在一段程序中的某个位置设置一个限流检查点,凡是需要通过该屏障的执行逻辑都要被检查是否超出节流限制,在一个有限的时段内只允许第一个执行逻辑通过。 若超出节流限制,则应结束该段逻辑。