Various scheduler algorithms in a unified interface.
Currently supported algorithms:
FifoScheduler
: FIFO (First-In-First-Out) scheduler (cooperative).RRScheduler
: Round-robin scheduler (preemptive).CFScheduler
: Completely Fair Scheduler (preemptive).
use std::sync::Arc;
use axsched::{FifoScheduler, FifoTask, BaseScheduler};
let mut scheduler = FifoScheduler::new();
scheduler.init();
for i in 0..10 {
let task = FifoTask::new(i);
scheduler.add_task(Arc::new(task));
}
for i in 0..10 {
let next = scheduler.pick_next_task().unwrap();
let task_id = *next.inner();
println!("Task {task_id} is running...");
assert_eq!(task_id, i);
scheduler.put_prev_task(next, false);
}