论坛元老
 
- 积分
- 4477
- 金钱
- 4477
- 注册时间
- 2013-4-22
- 在线时间
- 336 小时
|
发表于 2020-12-28 15:58:00
|
显示全部楼层
首先这段源码如下:
while(uxDeletedTasksWaitingCleanUp > (UBaseType_t)0U)
{
/* 进入临界区 */
taskENTER_CRITICAL();
{
/* 从等待终结列表中获取任务 */
pxTCB = listGET_OWNER_OF_HEAD_ENTRY((&xTasksWaitingTermination));
/* 将任务从等待终结列表中移除 */
(void)uxListRemove(&(pxTCB->xStateListItem));
/* 当前任务数减一 */
--uxCurrentNumberOfTasks;
/* 等待终结的任务数减一 */
--uxDeletedTasksWaitingCleanUp;
}
说明该值一直大于0,但是从代码逻辑来看。逻辑不会引起这个问题。那就分析taskENTER_CRITICAL()、pxTCB = listGET_OWNER_OF_HEAD_ENTRY((&xTasksWaitingTermination));、(void)uxListRemove(&(pxTCB->xStateListItem));这三个函数哪里引起的。具体的需要调试看。 |
|