创建线程的相关函数使用自动初始化宏定义
使用INIT_BOARD_EXPORT来运行创建线程的函数
会导致线程看起来创建成功了,但是实际DEBUG中压根没有进入过一次
代码如下
static void pvd_thread_entry(void* parameter)
{
static int cnt = 0;
while(1)
{
cnt++;
rt_kprintf("%d\n",cnt);
}
}
static int start()
{
/* 初始化完成量对象 */
rt_completion_init(&pvd_completion);
rt_thread_t tid;
tid = rt_thread_create("PVD", pvd_thread_entry, RT_NULL,
1024, 0, 20);
if(tid == RT_NULL)
{
LOG_E("PVD thread start failed!");
}
else
{
rt_thread_startup(tid);
}
return RT_EOK;
}
INIT_BOARD_EXPORT(start);
看起来也创建成功了,也没有报错。实际上。。。啥事也没发生

使用其他级别的自动初始化宏来运行创建线程的函数
如下代码,改变只有自动初始化宏不一样
static void pvd_thread_entry(void* parameter)
{
static int cnt = 0;
while(1)
{
cnt++;
rt_kprintf("%d\n",cnt);
}
}
static int start()
{
/* 初始化完成量对象 */
rt_completion_init(&pvd_completion);
rt_thread_t tid;
tid = rt_thread_create("PVD", pvd_thread_entry, RT_NULL,
1024, 0, 20);
if(tid == RT_NULL)
{
LOG_E("PVD thread start failed!");
}
else
{
rt_thread_startup(tid);
}
return RT_EOK;
}
INIT_PREV_EXPORT(start);
这就一直在执行了

造成这个原因是什么?
调度器还没运行?
没有看到关于这部分的说明
还是bug?
举报
更多回帖