线程是 RT-Thread 操作系统中最小的调度单位,线程调度算法是基于优先级的全抢占式多线程调度算 法,即在系统中除了中断处理函数、调度器上锁部分的代码和禁止中断的代码是不可抢占的之外,系统的其他部分都是可以抢占的,包括线程调度器自身。支持 256 个线程优先级(也可通过配置文件更改为最大支持 32 个或 8 个线...
启动线程:rt_thread_startup 获得当前线程:rt_thread_self 使线程让出处理器资源:rt_thread_yield(相同优先级,让出时间片) 使线程睡眠:rt_thread_sleeprt_thread_delayrt_thread_mdelay 挂起和恢复:rt_thread_suspendrt_thread_resume 控制线程:rt_thread_control 空闲钩子函数:rt_thread_idle_sethookrt_thread_i...
/* 线程控制块*/struct rt_thread{/* rt 对象*/char name[RT_NAME_MAX];/* 线程名称*/rt_uint8_t type;/* 对象类型*/rt_uint8_t flags;/* 标志位*/rt_list_t list;/* 对象列表*/rt_list_t tlist;/* 线程列表*//* 栈指针与入口指针*/void*sp;/* 栈指针*/void*entry;/* 入口函数指针*...
("thread1 count: %d\n",count++);rt_thread_mdelay(500);}}/* 线程示例 */intthread_sample(void){/* 创建线程 1,名称是 thread1,入口是 thread1_entry*/tid1=rt_thread_create("thread1",thread1_entry,RT_NULL,THREAD_STACK_SIZE,THREAD_PRIORITY,THREAD_TIMESLICE);/* 如果获得线程控制块,启动...
互斥量通过继承线程优先级,将持有互斥量的线程优先级提高到和挂载到suspend_thread的线程优先级一样高,这样就不会有低优先级的线程反而先被调度执行了; 2 mutex 结构体 //rtconfig.h 默认注释了define,用到的话需要自己开启; #defineRT_USING_MUTEX ...
掌握了 RT-Thread 消息队列的原理和操作方法,如果再学习其他款 RTOS,会感觉很轻松。 1消息队列的工作机制 1. 理解消息队列 线程或中断服务例程可以将一条或多条消息放入消息队列中。 一个或多个线程也可以从消息队列中获得消息。当有多个消息发送到消息队列时,通常将先进入消息队列的消息先传给线程,也就是说,线...
1 RT-Thread 介绍 1.1 RT-Thread 线程管理 调度 线程间通信(邮箱/消息队列/信号) 线程间同步(信号量/互斥量/事件集) 核心都是链表 & 定时器 1.2 3个层次 (1) 会用 API (2) 懂 内部机制 (3) 掌握代码实现细节, 能移植 前2个层次可速成: 10 几个小时足够 ...
一、进程间通信机制 rt-thread操作系统的IPC(Inter-Process Communication,进程间同步与通信)包含有中断锁、调度器锁、信号量、互斥锁、事件、邮箱、消息队列。其中前5个主要表现为线程间同步,邮箱与消息队列表现为线程间通信。本文主要介绍它们的一些特性及使用场合。
FinSH 是 RT-Thread 的命令行组件,类似于 Linux 下的 shell,提供了一套供用户在命令行调用的操作接口,主要用于调试或查看系统信息,它可以使用串口、网口、USB 等与 PC 进行通信。 当使用串口连接设备与控制终端时,FinSH 命令的执行流程如图: 用户在控制终端输入命令,控制终端通过串口、 USB、网络等方式将命令传给...