os_task_suspend_self

所属模块:任务管理 | 类型:任务主动挂起函数

API Metadata

函数ID:os_task_suspend_self
模块:task
类型:self suspend / yield block
嵌套深度:1

函数简介

os_task_suspend_self 用于当前正在运行的任务主动挂起自身。

挂起后任务将从调度队列中移除,并触发系统重新调度。

该接口常用于任务主动让出CPU资源,实现协作式调度或节拍控制。

函数原型

void os_task_suspend_self(void);

参数说明

无参数。

返回值

无返回值。

源码实现

void os_task_suspend_self() { u8 id; id = OS_CURRENT_TASK; if(id >= OS_PROCESS_MAX) { id %= OS_PROCESS_MAX; if(id == 1) { OS_KUAI_PROCESS_B = 0; } else { OS_KUAI_PROCESS_A = 0; } } else { OS_PROCESS_OK[id] &= 0xFE; } OS_SCHED_REASON = 1; TF0 = 1; }

使用示例

void task_demo() { while(1) { // 执行一轮任务后主动让出CPU os_task_suspend_self(); } }

注意事项

该函数会立即触发调度,当前任务将不再继续执行当前时间片。 若任务未被其他机制重新激活,将持续处于挂起状态。

相关推荐