njsssmq 发表于 2023-12-17 21:56:06

RTX5线程终止问题

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);
}
}

eric2013 发表于 2023-12-18 08:18:52

osThreadTerminate(hreadIdThread2);返回值判断下

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

njsssmq 发表于 2023-12-18 11:09:06

问题找到。因为thread2修改了代码,需要更多的栈导致。扩大栈后,正常
页: [1]
查看完整版本: RTX5线程终止问题