在使用自动初始化创建线程,线程中创建了一个消息队列,发现了两个问题。
代码如下:
int key_thread_process_init(void)
{
rt_thread_t tid;
/*消息队列的创建*/
key_mq= rt_mq_create( "key_mq",
1,
256,
RT_IPC_FLAG_FIFO
);
if(key_mq != RT_NULL)
{
rt_kprintf("消息队列key_mq创建成功\n\n");
}
tid = rt_thread_create("key_process_thread",
key_thread_entry,
RT_NULL,
512,
20,
10);
if (tid != NULL)
{
rt_thread_startup(tid);
}
return 0;
}
INIT_APP_EXPORT(key_thread_process_init);
问题1
出现线程错误

这个线程的初始化是在key.c当中,而把这个初始化函数移动到另一个C文件当中进行初始化恢复正常。
问题2
出始化函数中把消息队列部分删除掉,在key.c中也是正常。
希望论坛当中的朋友有遇到过的帮忙解答一下,非常感谢!!
你好 我没设置这个线程,不懂为什么出现了。
@张熠然-RT 查一下代码,既然有这个线程,那应该还是程序里创建了。
另外你描述的现象看,问题应该就在消息队列,看一下是不是在消息队列创建成功之前,其他程序代码已经在使用了?
@小小李sunny 其它线程是有的,我自己感觉和自动初始化有关系,不使用初始化就没问题。