Zephyr内核——内核服务(调度,中断和同步)——线程

线程

本节描述用于创建、调度和删除独立可执行指令线程的内核服务。

线程是一个内核对象,用于由ISR无法执行的太长或太复杂的应用程序处理。

任意数量的线程都可以由应用程序来定义(仅受可用RAM的限制)。每个线程都由一个在生成线程时分配的线程id引用。

线程具有以下关键属性:

  • 堆栈区域,它是用于线程堆栈的内存区域。堆栈区域的大小可以根据线程处理的实际需要进行定制。存在一些特殊的宏来创建和使用堆栈内存区域。
  • 线程控制块,用于线程元数据的私有内核簿记的线程控制块。这是k_thread类型的一个实例。
  • 一个入口点函数,在线程启动时被调用。最多有3个可以传递给此函数的参数值。
  • 一种调度优先级,它指示内核的调度程序如何为线程分配CPU时间。(请参见“进度计划”。)
  • 一组线程选项,它允许线程在特定情况下接受内核的特殊处理。(请参见“线程选项”。)
  • 启动延迟,它指定内核在启动线程之前应该等待多长时间。
  • 一种执行模式,它可以是监督模式,也可以是用户模式。默认情况下,线程在监控模式下运行,并允许访问有特权的CPU指令、整个内存地址空间和外设。用户模式线程具有一组减少的特权。这取决于CONFIG_USERSPACE选项。请参见用户模式。

生命周期

线程创建

必须创建线程才能使用。内核初始化线程控制块以及堆栈部分的一端。线程堆栈的其余部分通常未进行初始化。

指定K_NO_WAIT的启动延迟将指示内核立即开始线程执行。或者,可以通过指定一个超时值来指示内核延迟线程的执行——例如,允许线程使用的设备硬件可用。
内核允许在线程开始执行之前取消一个延迟的启动。如果线程已经启

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值