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 在 并发
33KB
595 行
scheduled-executor
一个简单的函数调度器。
库
此库提供了一系列用于调度和执行任务(函数和闭包)的实用工具。任务可以在固定间隔或固定速率下执行,可以在主执行器线程中顺序执行,也可以使用线程池并行执行。
执行器
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