【RTT】线程(2):线程的创建和启动

本文详细介绍了RTT线程的创建,包括静态和动态创建方式,并分析了无论哪种方式最终都会调用相同的初始化函数_rt_thread_init。此外,还讲解了硬件相关的栈初始化,以stm32l4系列的cortex-m4架构为例。最后,讨论了线程的启动,线程启动后进入就绪态,等待调度器调度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  

一、线程的创建

  

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函数&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值