RT-Thread操作系统
文章平均质量分 75
Annu-HoldOn
这个作者很懒,什么都没留下…
展开
-
RT-Thread 线程间通信 信号量
一个线程运行的时候,如果需要某个资源,就会来询问这个资源还有多少,这个信号量就是记录资源的数量。将自己从readylist链表里面移除,挂在信号量的链表里面,开启线程的定时器。查看信号量的链表里面有没有等待信号量挂起的线程,唤醒这些等待的线程。当线程使用这个资源的时候,就会获取这个信号量,会让这个信号量--,当线程使用完之后,不再需要资源了,就要释放信号量,让信号量++。获取信号量,如果信号量还有,直接获取就可以。没有信号量,且不愿意等待,返回错误。之后再释放信号量,信号量++。原创 2023-11-23 21:10:45 · 57 阅读 · 0 评论 -
RT-Thread 线程间通信 邮箱(2)
这个函数的参数是,要读取的邮箱的名称,读取的值存放的地址,以及如果没读到内容要等待的时间,三个参数。这个函数的参数是,写入的邮箱的名称,写入的值,以及如果没写进去要等待的时间,三个参数。最后将邮箱内信息的数量,第一个信息的位置,最后一个信息的位置,设定为0.这几步就是根据给的邮箱内的个数,去创建一块地方,用于存放邮箱内的数据。将自己从系统的readtlist移除,并将自己挂在邮箱的链表里面,紧急,就是发送的数据放在邮箱第一个的位置。这个链表,两个使用的链表是不一样的。普通发送即等待时间为0。原创 2023-11-23 14:57:31 · 76 阅读 · 0 评论 -
RT-Thread 线程间通信 邮箱(1)
**邮箱中可以用的数据的个数*/rt_uint16_t out_offset;-->等待: -->线程进入阻塞,把自己记录在邮箱的链表里面。-->:等待:-->线程进入阻塞,把自己记录在邮箱的链表里面。消息队列里的数据的大小是创建消息队列的时候指定的,长度由。邮箱创建的时候,会划出一片空间,作为邮箱的数组,1、邮箱内存放的数据的大小是固定的,长度为。-->邮箱内没数据:等待?-->邮箱内有数据:成功。-->:没有空位:等待?原创 2023-11-23 14:57:11 · 71 阅读 · 0 评论 -
RT-Thread 线程间通信 消息队列(2)
->等待一段时间:-->另一个线程读的时候,唤醒陷入等待的线程。-->等待一段时间:-->另一个线程写的时候,唤醒陷入等待的线程。知道了消息队列的原理,创建消息队列搭建了一个什么东西,就好理解其他几个操作的函数的含义了。1、会先把自己从系统的readylist里面移除,不在系统的待运行的线程列表里面了。1、会先把自己从系统的readylist里面移除,不在系统的待运行的线程列表里面了。创建消息队列,根据给的几个参数,创建一个空闲的消息队列,组成消息块链表,-->不空:-->返回失败。原创 2023-11-22 20:19:33 · 122 阅读 · 0 评论 -
RT-Thread 线程间通信 消息队列(1)
创建的消息队列,线程A、B都可以往队列里发消息,线程C、D都可以从队列里写消息,来实现线程之间的通信。这段操作会把消息队列里面的消息块连起来,每一个消息块的next指着下一个消息块。最后把 mq->msg_queue_free指针,指向第一个空的消息块。创建队列,会根据msg_size,和max_msgs计算出队列的大小,假设线程A往队列里写消息,线程B从队列读消息,其过程是这样的。创建的消息队列需要,消息队列的大小,消息队列的数量,msg_size就是消息队列里面,每个消息块的大小。原创 2023-11-22 14:47:22 · 92 阅读 · 0 评论 -
RT-Thread线程内部机制(5)
在rt_tick_increase( )函数最后有一个rt_timer_check( )函数这个函数检测线程的timeout_tick是否到达设定的值,这个值一般是由线程睡眠或者线程延时函数设置的,检测到时间后,会调用rt_thread_timeout( )函数。原创 2023-11-20 15:15:02 · 116 阅读 · 0 评论 -
RT-Thread线程内部机制(4)
链表定时器。原创 2023-11-20 14:24:16 · 83 阅读 · 0 评论 -
RT-Thread线程内部机制(3)
函数的作用:1、分配一个rt_thread作为句柄2、分配线程的栈3、初始化这个栈内的参数。原创 2023-11-16 19:17:41 · 28 阅读 · 0 评论 -
RT-Thread线程内部机制(2)
rt_thread 用 thread 来表示一个线程,这一步创建了返回的线程句柄,也就是上面提到的 thread 结构体2、分配栈:这一步确定了栈的大小,也就是 thread -> stack_size3、初始化栈:thread -> sp 确定栈顶位置,1、修改thread -> sp的位置这三句的作用是sp从给出的栈地址开始向下移动stack_frame大小的空间这个stack_frame是用来后面虚构栈的内容用的 把这一部分虚构出来,并赋予虚构的值。最后实际使原创 2023-11-16 19:17:43 · 32 阅读 · 0 评论 -
RT-Thread线程内部机制(1)
RTOS代表实时操作系统(Real-Time Operating System)。一种专为实时应用程序设计的操作系统,用于控制嵌入式系统中的实时任务和事件。RTOS的主要特点是能够满足严格的时间约束和响应要求。原创 2023-11-16 14:34:58 · 52 阅读 · 0 评论