FreeRTOS-删除任务笔记

任务删除函数:  void vTaskDelete( TaskHandle_t xTaskToDelete )

1.获取要删除任务的任务控制块

FreeRTOS-删除任务笔记

2. 把要删除的任务从就绪列表中删除

FreeRTOS-删除任务笔记

3.判断要删除的任务是否有等待事件发生,如果有的话从列表中删除。

FreeRTOS-删除任务笔记

4.如果要删除的任务是当前运行的任务时,把当前任务放到xTasksWaitingTermination 列表中,当下一次空闲任务运行的时候会把要删除任务的内存删除掉。uxDeletedTasksWaitingCleanUp意思是有多少个任务需要释放内存。

FreeRTOS-删除任务笔记

5.如果闪出的任务不是当前运行的任务时,1.任务总数减1, 2.删除任务控制块, 3.更新下一个任务的阻塞时间FreeRTOS-删除任务笔记

6.如果任务调度器已经在运行,并且删除的任务是正在运行的任务,则进行一次任务切换。

FreeRTOS-删除任务笔记