os_task_delete

所属模块:任务管理 | 类型:任务控制函数

API Metadata

函数ID:os_task_delete
模块:task
类型:task lifecycle control
嵌套深度:1

函数简介

os_task_delete 用于删除指定任务,并将其从调度器中移除。

该函数不会立即释放任务资源,而是通过标记删除请求,由系统在安全时机进行处理。

同时会解除该任务在调度器中的运行资格,确保不会再被调度执行。

函数原型

char os_task_delete(unsigned char id);

参数说明

参数 说明
id 任务ID(不能为0,必须小于任务总数)

返回值

1:删除请求成功
-1:参数非法

源码实现

char os_task_delete(unsigned char id) { if(id == 0 || id >= OS_TASK_TOTAL) { return -1; } EA = 0; /* 标记删除请求 */ OS_TASK_EVENT[id] |= OS_EVENT_DELETE_REQ; /* 从调度器移除 */ if(id >= OS_PROCESS_MAX) { if(id == OS_PROCESS_MAX) { OS_KUAI_PROCESS_A = 0; } else if(id == OS_PROCESS_MAX + 1) { OS_KUAI_PROCESS_B = 0; } } else { OS_PROCESS_OK[id] &= 0xfe; } EA = 1; return 1; }

使用示例

void demo() { os_task_delete(3); }

注意事项

任务删除采用“延迟标记机制”,不会立即释放资源,需等待系统清理流程完成。 删除高优先级任务时需谨慎,避免影响调度稳定性。

相关推荐