Time Control Core

Delay vs Wait(延时与等待机制对比)

本页面用于对比 RTOS 中 delay(延时阻塞)与 wait(事件等待)两种调度行为的本质差异, 包括 CPU 释放方式、调度触发条件与实时性影响。

机制定义

delay = 时间驱动阻塞(time-based blocking)
wait = 事件驱动阻塞(event-based blocking)
Time Control Model = Tick Scheduling + Time Blocking + Event Blocking + Wake-up Dispatch

核心区别

Delay(延时)

任务主动进入阻塞状态,等待固定时间片结束后恢复执行。

Wait(等待)

任务等待某个事件(信号量 / 消息 / 条件)触发后恢复执行。

调度触发方式

delay 依赖系统 tick;wait 依赖事件唤醒。

实时性影响

wait 通常优于 delay(响应更快、CPU利用率更高)。

执行行为流程

Delay 流程

进入阻塞 → 加入时间队列 → Tick递减 → 时间到恢复

Wait 流程

进入阻塞 → 加入事件队列 → 事件触发 → 立即唤醒

演示代码


/* HRTOS Delay vs Wait Demo */

#include <HRTOS_KERNEL.H>
#include <HRTOS.H>

void task_delay(void)
{
    while(1)
    {
        os_wait1(10);   // delay行为:时间驱动阻塞
    }
}

void task_wait(void)
{
    while(1)
    {
        os_wait_event(1); // wait行为:事件驱动阻塞
    }
}

void main(void)
{
    os_scheduling(1);

    os_task((unsigned int)task_delay, 0, 2, 0);
    os_task((unsigned int)task_wait, 1, 3, 0);

    os_task_release(0);

    while(1)
    {
        os_nop();
    }
}

API 接口: Time Control API

时间系统位置

Time Control is the root driver of RTOS scheduling, communication and synchronization.

系统意义

delay 适用于周期性控制任务,而 wait 更适用于事件驱动系统。 在 HRTOS 中,wait 被优先优化用于提升实时响应能力。

调度与时间关系

Scheduler decisions are triggered by time tick or event wake-up.

相关导航

任务执行模型

Task Execution

调度系统

Scheduling Engine

中断机制

Interrupt Flow

任务生命周期

Task Lifecycle

时间控制系统

Time Control