21 const char*
name{
"Unnamed Scheduler"};
65 [[nodiscard]] virtual auto
IsEmpty() const ->
bool = 0;
102 [[maybe_unused]]
int new_priority) ->
void {}
virtual auto OnTick(TaskControlBlock *current) -> bool
Tick 更新:每个时钟中断时调用,用于更新调度器状态
virtual auto PickNext() -> TaskControlBlock *=0
选择下一个要运行的任务 (不会从队列中移除)
virtual auto BoostPriority(TaskControlBlock *task, int new_priority) -> void
优先级提升:当任务持有资源时被更高优先级任务等待,提升其优先级
auto operator=(const SchedulerBase &) -> SchedulerBase &=default
virtual ~SchedulerBase()=default
virtual auto OnPreempted(TaskControlBlock *task) -> void
任务被抢占时调用 (从 Running 变为 Ready)
virtual auto Enqueue(TaskControlBlock *task) -> void=0
将任务加入就绪队列
auto operator=(SchedulerBase &&) -> SchedulerBase &=default
virtual auto GetQueueSize() const -> size_t=0
获取就绪队列中的任务数量 (用于负载均衡)
virtual auto RestorePriority(TaskControlBlock *task) -> void
优先级恢复:当任务释放资源后,恢复其原始优先级
virtual auto IsEmpty() const -> bool=0
判断队列是否为空
virtual auto Dequeue(TaskControlBlock *task) -> void=0
从就绪队列移除指定任务 (用于任务阻塞/退出)
virtual auto GetStats() const -> const Stats &
获取调度器统计信息
SchedulerBase(SchedulerBase &&)=default
virtual auto OnScheduled(TaskControlBlock *task) -> void
任务开始运行时调用 (从 Ready 变为 Running)
virtual auto ResetStats() -> void
重置统计信息
virtual auto OnTimeSliceExpired(TaskControlBlock *task) -> bool
时间片耗尽处理:当任务时间片用完时调用
SchedulerBase(const SchedulerBase &)=default
size_t total_dequeues
总出队次数
size_t total_preemptions
总抢占次数
size_t total_enqueues
总入队次数