一、线程的创建
1、 静态创建
该函数定义在 rt-thread/src/thread.c 文件中。
rt_err_t rt_thread_init(struct rt_thread *thread,
const char *name,
void (*entry)(void *parameter),
void *parameter,
void *stack_start,
rt_uint32_t stack_size,
rt_uint8_t priority,
rt_uint32_t tick)
{
......
/* 线程对象初始化 */
rt_object_init((rt_object_t)thread, RT_Object_Class_Thread, name);
return _rt_thread_init(thread,
name,
entry,
parameter,
stack_start,
stack_size,
priority,
tick);
}
2 、动态创建
该函数定义在 rt-thread/src/thread.c 文件中。
rt_thread_t rt_thread_create(const char *name,
void (*entry)(void *parameter),
void *parameter,
rt_uint32_t stack_size,
rt_uint8_t priority,
rt_uint32_t tick)
{
......
/* 分配一个线程控制块 */
thread = (struct rt_thread *)rt_object_allocate(RT_Object_Class_Thread,
name);
......
/* 分配线程栈 */
stack_start = (void *)RT_KERNEL_MALLOC(stack_size);
......
_rt_thread_init(thread,
name,
entry,
parameter,
stack_start,
stack_size,
priority,
tick);
return thread;
}
3 、分析
无论是静态创建,还是动态创建,最后调用的初始化函数都是一样的,该函数就是_rt_thread_init函数&#