【文件属性】:
文件名称:删除任务-金蝶云·苍穹混合云部署手册_v1.0
文件大小:2.37MB
文件格式:PDF
更新时间:2021-06-24 04:26:27
FreeRTOS 内核 MCU IOT 嵌入式
1.9 删除任务
vTaskDelete() API 函数
任务可以使用 API 函数 vTaskDelete()删除自己或其它任务。
任务被删除后就不复存在,也不会再进入运行态。
空闲任务的责任是要将分配给已删除任务的内存释放掉。因此有一点很重要,那就
是使用 vTaskDelete() API 函数的任务千万不能把空闲任务的执行时间饿死。
需要说明一点,只有内核为任务分配的内存空间才会在任务被删除后自动回收。任
务自己占用的内存或资源需要由应用程序自己显式地释放。
void vTaskDelete( xTaskHandle pxTaskToDelete );
程序清单 25 vTaskDelete() API 函数原型
表 6 vTaskDelete()参数
参数名 描述
pxTaskToDelete 被删除任务的句柄(目标任务) —— 参考 xTaskCreate() API函数的
参数 pxCreatedTask 以了解如何得到任务句柄方面的信息。
任务可以通过传入 NULL 值来删除自己。
例 9. 删除任务
这是一个非常简单的范例,其行为如下:
任务 1 则 main()创建在优先级 1 上。任务 1 运行时,以优先级 2 创建任务 2。现
在任务 2 具有 高优先级,所以会立即得到执行。main()函数的源代码参见程
序清单 26,任务 1 的实现代码参见程序清单 27。
任务 2 什么也没有做,只是删除自己。可以通过传递 NULL 值以 vTaskDelete()
来删除自己,但是为了纯粹的演示,传递的是任务自己的句柄。任务 2 的实现
源代码见程序清单 28。