硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1375|回复: 2
收起左侧

[RL-RTX] RTX5线程终止问题

[复制链接]

6

主题

48

回帖

66

积分

初级会员

积分
66
发表于 2023-12-17 21:56:06 | 显示全部楼层 |阅读模式
MDK 38a、RTX V5.5.4、C 6.19下,在thread1种多次删除、创建thread2后,会导致创建thread2不成功,返回为NULL。不知是何原因

static osThreadId_t threadIdThread2 = NULL;
static const osThreadAttr_t thread2Attr =
{
        .name = "osRtxThread2",
        .attr_bits = osThreadDetached,
        .priority = osPriorityNormal,
        .stack_size = 128,
};

void thread2(void *argument)   
{
  // do some things
        osThreadTerminate(osThreadGetId ());                                  //删除自身本线程
}

void thread1(void *argument)   
{
  for(;;)
  {

    //...

    if(threadIdThread2 != NULL)
    {//如果线程已被建立,删除线程
       osThreadTerminate(hreadIdThread2);
    }
    threadIdThread2=osThreadNew(thread2, NULL, &thread2Attr);
  }
}
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
111540
QQ
发表于 2023-12-18 08:18:52 | 显示全部楼层
osThreadTerminate(hreadIdThread2);返回值判断下

如果返回值成功了,手动将threadIdThread2设置为NULL
回复

使用道具 举报

6

主题

48

回帖

66

积分

初级会员

积分
66
 楼主| 发表于 2023-12-18 11:09:06 | 显示全部楼层
问题找到。因为thread2修改了代码,需要更多的栈导致。扩大栈后,正常
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-11-1 07:19 , Processed in 0.283351 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表