RT-Thread 线程管理的主要功能是对线程进行管理和调度,系统中总共存在两类线程,分别是系统线程和用户线程。系统线程是由RT-Thread 内核创建的线程,用户线程是由应用程序创建的线程,这两类线程都会从内核对象容器中分配线程对象,当线程被删除时,也会被从对象容器中删除。 如图所示,每个线程都有重要的属性,如线程控制块...
对于运行RT-Thread操作系统,线程都处于以下五种状态的其中一种(初始状态、就绪状态、运行状态、挂起状态、关闭状态),通过调用操作系统提供的接口函数,可以让线程在这五种状态中进行来回切换。 关于这五种线程状态的描述,如下表所示: 多线程的API函数 如上图的状态机所示,多线程可以通过调用系统提供的函数接口,在多个...
区别就是线程间同步能做的事情太有限了,线程间同步只是告诉一下对方“别跑太快,等等我嘛~”,而线程间通信,就是有一大堆的数据和信息要告知对方,万一A线程有很多话要跟B线程说,线程同步这种方式就不能满足要求了,所以需要线程间通信。 线程间通信的方式 针对RT-Thread实时操作系统,线程间通信主要有三种方式:邮箱,...
RT-Thread 采用内核对象管理系统来访问 / 管理所有内核对象,内核对象包含了内核中绝大部分设施,这些内核对象既可以是静态分配的静态对象,也可以是从系统内存堆中分配的动态对象。通过这种内核对象的设计方式,RT-Thread 做到了不依赖于具体的内存分配方式,系统的灵活性得到极大的提高。 RT-Thread 内核对象包括:线程,信号...
本文将介绍RT-Thread多线程的编写方法,包括线程的创建、同步、通信等关键技术。 二、线程创建 RT-Thread支持多种线程创建方式,包括手动创建、自动创建和共享内存创建。手动创建适用于简单的应用场景,自动创建适用于复杂的应用场景,而共享内存创建适用于需要跨进程或跨线程通信的情况。在创建线程时,需要指定线程的优先级...
线程栈的增长方向是芯片构架密切相关的,RT-Thread 3.1.0 以前的版本,均只支持栈由高地址向低地址增长的方式,对于ARM Cortex-M 架构,线程栈可构造如下图所示。 (2) 线程状态 线程运行的过程中,同一时间内只允许一个线程在处理器中运行,从运行的过程上划分,线程有多种不同的运行状态,如初始状态、挂起状态、就绪...
RT-Thread 线程管理的主要功能是对线程进行管理和调度,系统中总共存在两类线程,分别是系统线程和用户线程,系统线程是由 RT-Thread 内核创建的线程,用户线程是由应用程序创建的线程,这两类线程都会从内核对象容器中分配线程对象,当线程被删除时,也会被从对象容器中删除,如下方图所示,每个线程都有重要的属性,如线程控...
在RT-Thread中,多线程编程需要使用到RT-Thread提供的线程相关的API。下面以创建一个新线程为例,介绍多线程的基本写法。 1.导入线程相关的头文件 c #include <rtthread.h> 2.定义新线程的入口函数 c static void thread_entry(void* parameter) { 线程的具体操作 rt_kprintf("Hello, RT-Thread!\n"); } 3...
多线程是实时操作系统里面最重要的知识点之一,要学习RTOS,多线程是必须(没错,是必须)要熟练掌握的内容,只有熟练掌握多线程的使用,才能在平时的项目工作里面用好实时操作系统。 关于多线程的使用和管理,RT-Thread官方提供了比较丰富的文档作为参考,具体可以查看以下链接:https://www.rt-thread.org/doc...,本文是对...
在使用RT-Thread实时操作系统进行多线程应用开发的时候,应该要注意以下事项: 1、RT-Thread的线程调度器是抢占式的,也就是能够保证就绪队列里面,最高优先级的任务总能获得CPU的使用权,在任务设计的时候,要充分考虑好任务的优先级。 2、在硬件中断服务程序运行期间,如果有高优先级的任务就绪,那么被中断的低优先级任务...