至此,RT-Thread的一个具体的线程就了解完毕,一个线程的三大要素——主体,控制块,堆栈也都作以了解,接下来我们开始最重要的部分,创建一个线程;
2.3.线程的创建在2.2.3节讲述创建线程堆栈时提到,如果栈空间可以是一个预先定义好的全局数组,比如led线程的堆栈,这样的线程称为静态线程,相对的,如果这个栈空间是动态分配的,该线程称为动态线程**。
接下来通过具体的实例说明:
2.3.1.静态线程的创建RT-Thread中静态线程的线程堆栈由编译器静态分配,使用rt_thread_init()函数创建,代码如下所示:
int led_sample_init(void){
rt_err_t result;
/* init led thread */
result = rt_thread_init(&led_thread,
"led",
led_thread_entry,
RT_NULL,
(rt_uint8_t *)&led_stack[0],
sizeof(led_stack),
20,
5);
if (result == RT_EOK)
{
rt_thread_startup(&led_thread);
}
return 0;
}