RTT-线程管理

RTT-线程管理

官方API文档:https://www.rt-thread.org/document/api/group___thread.html

在这里插入图片描述

概念

线程是竞争系统资源的最小运行单元。每个线程在自己的环境中运行。在任何时刻,只有一个线程得到运行,RT-Thread 调度器决定运行哪个线程。调度器会不断启动、停止每一个线程,宏观看上去所有的线程都在同时在执行。作为线程,不需要对调度器的活动有所了解,在线程切入切出时保存上下文环境(寄存器值、堆栈内容)是调度器主要的职责。为了实现这点,每个 RT-Thread 线程都需要有自己的堆栈。当线程切出时,它的执行环境会被保存在该线程的堆栈中,这样当线程再次运行时,就能从堆栈中正确的恢复上次的运行环境。
RT-Thread 中的线程是抢占式调度机制,同时支持时间片轮转调度方式。高优先级的线程可打断低优先级线程,低优先级线程必须在高优先级线程阻塞或结束后才能得到调度。同优先级的任务按照时间片轮转调度。

接口

创建静态线程

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_err_t rt_thread_detach (rt_thread_t thread)

创建动态线程

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_delete (rt_thread_t thread)

启动线程

rt_err_t rt_thread_startup (rt_thread_t thread)

睡眠线程

rt_err_t rt_thread_sleep (rt_tick_t tick)

挂起线程

rt_err_t rt_thread_suspend (rt_thread_t thread)

恢复线程

rt_err_t rt_thread_resume (rt_thread_t thread)

获取当前线程对象指针

rt_thread_t rt_thread_self (void)

修改线程配置参数

rt_err_t rt_thread_control (rt_thread_t thread, int cmd, void *arg)

让出资源

rt_err_t rt_thread_yield (void )
该函数将使当前线程出让处理器资源,它将不再占有处理器,调度器会选择相同优先级的下一个线程执行。 线程调用这个接口后,这个线程仍然在就绪队列中。

用法

静态创建

  1. 定义线程栈
  2. 定义线程控制块
  3. 定义线程函数
  4. 创建静态线程
  5. 启动线程

动态创建

  1. 分配一部分RAM空间来作为 RT-Thread 的堆空间
  2. 定义线程控制块
  3. 定义线程函数
  4. 创建动态线程
  5. 启动线程
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tangYi0_0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值