4个版本 (2个破坏性版本)

使用旧Rust 2015

0.4.0 2017年11月26日
0.3.0 2017年6月25日
0.2.1 2017年6月22日
0.2.0 2017年6月22日

#1151并发

MIT 许可证

33KB
595

scheduled-executor

crates.io docs.rs Build Status

一个简单的函数调度器。

此库提供了一系列用于调度和执行任务(函数和闭包)的实用工具。任务可以在固定间隔或固定速率下执行,可以在主执行器线程中顺序执行,也可以使用线程池并行执行。

执行器

  • CoreExecutor:在单个线程上调度和执行任务,适用于短运行任务。
  • ThreadPoolExecutor:在线程池上调度和执行任务。适用于长运行任务。

任务组

scheduled-executor crate还提供了一种抽象,用于执行称为TaskGroup的任务组。一个TaskGroup需要一个生成任务集合的方法,这些任务将在每个周期的开始执行,以及一个执行单个任务的方法,该任务将针对每个任务执行。

要查看任务组的实际应用,请查看task_group.rs示例。

文档

示例

调度周期性任务非常简单。以下是一个使用线程池的示例

// Starts a new thread-pool based executor with 4 threads
let executor = ThreadPoolExecutor::new(4)?;

executor.schedule_fixed_rate(
    Duration::from_secs(2),  // Wait 2 seconds before scheduling the first task
    Duration::from_secs(5),  // and schedule every following task at 5 seconds intervals
    |remote| {
        // Code to be scheduled. The code will run on one of the threads in the thread pool.
        // The `remote` handle can be used to schedule additional work on the event loop,
        // if needed.
    },
);

依赖关系

~6MB
~95K SLoC