RT-Thread入门笔记3-线程的创建

发布时间:2024年01月11日

线程

RT-Thread 中,线程由三部分组成:线程代码(入口函数)、线程控制块、线程堆栈.

线程代码:
在这里插入图片描述
线程控制块 :
线程控制块是操作系统用于管理线程的一个数据结构, 它会存放线程的一些信息, 例如优先级、 线程名称、 线程状态等, 也包含线程与线程之间连接用的链表结构, 线程等待事件集合等。
struct rt_thread
struct rt_thread *rt_thread_t
线程堆栈:
RT-Thread 每个线程都具有独立的栈空间, 当进行线程切换时, 系统会将当前线程的上下文保存在线程栈中, 当线程要恢复运行时, 再从线程栈中读取上下文信息, 恢复线程的运行。 线程上下文是指线程执行时的环境,具体来说就是各个变量和数据包括所有寄存器变量、堆栈信息、内存信息等。 线程栈在形式上是一段连续的内存空间 ,我们可以通过定义一个数组或者申请一段动态内存来作为线程的栈。

创建线程

rt_err_t rt_thread_init(struct rt_thread *thread,                //线程Handle 
                        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_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)                  //线程时间片

                              创建动态线程

启动线程

rt_err_t rt_thread_startup(rt_thread_t thread)                  //调用此函数后创建的线程会被加入到线程的就绪队列,执行调度
文章来源:https://blog.csdn.net/qq_42170079/article/details/135473859
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。