os_task_suspend_self
所属模块:任务管理 | 类型:任务主动挂起函数
函数简介
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();
}
}
注意事项
该函数会立即触发调度,当前任务将不再继续执行当前时间片。
若任务未被其他机制重新激活,将持续处于挂起状态。