线程
本节描述用于创建、调度和删除独立可执行指令线程的内核服务。
线程是一个内核对象,用于由ISR无法执行的太长或太复杂的应用程序处理。
任意数量的线程都可以由应用程序来定义(仅受可用RAM的限制)。每个线程都由一个在生成线程时分配的线程id引用。
线程具有以下关键属性:
- 堆栈区域,它是用于线程堆栈的内存区域。堆栈区域的大小可以根据线程处理的实际需要进行定制。存在一些特殊的宏来创建和使用堆栈内存区域。
- 线程控制块,用于线程元数据的私有内核簿记的线程控制块。这是k_thread类型的一个实例。
- 一个入口点函数,在线程启动时被调用。最多有3个可以传递给此函数的参数值。
- 一种调度优先级,它指示内核的调度程序如何为线程分配CPU时间。(请参见“进度计划”。)
- 一组线程选项,它允许线程在特定情况下接受内核的特殊处理。(请参见“线程选项”。)
- 启动延迟,它指定内核在启动线程之前应该等待多长时间。
- 一种执行模式,它可以是监督模式,也可以是用户模式。默认情况下,线程在监控模式下运行,并允许访问有特权的CPU指令、整个内存地址空间和外设。用户模式线程具有一组减少的特权。这取决于CONFIG_USERSPACE选项。请参见用户模式。
生命周期
线程创建
必须创建线程才能使用。内核初始化线程控制块以及堆栈部分的一端。线程堆栈的其余部分通常未进行初始化。
指定K_NO_WAIT的启动延迟将指示内核立即
本文档详细介绍了Zephyr内核中的线程管理,包括线程的创建、生命周期、堆栈对象、线程优先级和选项。线程是内核对象,用于执行复杂的任务。线程可以通过返回其入口点函数来终止,也可以被其他线程中止。内核提供了创建、调度和删除线程的接口,并允许调整线程的优先级和选项。线程的堆栈区域可以定制,且有特定的宏来处理堆栈内存。线程的执行模式可以在监督或用户模式下运行,用户模式受到限制。
订阅专栏 解锁全文
582

被折叠的 条评论
为什么被折叠?



