在研究ART-Pi中的“art-pi-factory”的例子代码发现一个问题,”web_init”这个线程是在wifi连网之前就启动后,负责监测wifi连网状态,list_thread命令显示线程如下:

static void web_init_thread(void *param)
{
while (!rt_wlan_is_ready())
{
rt_thread_mdelay(500);
}
webnet_init();
}
int web_init(void)
{
rt_thread_t tid = rt_thread_create("web_init", web_init_thread, NULL, 512, 15, 5);
if (tid)
{
rt_thread_startup(tid);
return 0;
}
else
{
LOG_E("web init thread create failed");
return -1;
}
}
若wifi连网成功,则启动“webnet_init();”,这个函数会启动一个“webnet”的线程,现在问题来了,在“webnet_init()”函数中没有看到任何删除线程的代码,”web_init”这个线程看不到了,通过list_thread命令可以查看。

int webnet_init(void)
{
rt_thread_t tid;
if (init_ok == RT_TRUE)
{
LOG_I("RT-Thread webnet package is already initialized.");
return 0;
}
tid = rt_thread_create(WEBNET_THREAD_NAME,
webnet_thread, RT_NULL,
WEBNET_THREAD_STACKSIZE, WEBNET_PRIORITY, 5);
if (tid != RT_NULL)
{
rt_thread_startup(tid);
init_ok = RT_TRUE;
LOG_I("RT-Thread webnet package (V%s) initialize success.", WEBNET_VERSION);
}
else
{
LOG_E("RT-Thread webnet package (V%s) initialize failed.", WEBNET_VERSION);
return -1;
}
return 0;
}
这就是线程的回收机制在起作用,之前一直没有想明白这个地方,谢谢讲解。
@a1072619378 如果该回答对你有帮助或解决了你的疑问,还请点击“采纳此回答”哦