21-消息队列控制块

本文详细介绍了消息队列控制块的关键组成部分,包括队列首尾地址、互斥变量管理、入队出队阻塞列表、信号量状态指示以及队列操作的同步机制,帮助读者理解队列在系统中的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

消息队列控制块代码逐行说明

(1)、指向队列消息存储区的起始位置的地址(即队首)

(2)、指向队列消息存储区的结束位置的地址(即队尾)

(3)、指向队列消息存储区下一个可用消息空间

(4)(5)是一对互斥的变量,使用联合体来确保这两个变量不会同时出现。当结构体用于队列的时候,使用(4),含义是:指向出队消息空间的最后一个(利用指针读取消息的内容)。当结构体用于互斥量的时候,使用5),含义是:用于计数,记录递归互斥量被调用的次数。

(6)、(入队阻塞)用于发送消息阻塞的一个列表,用于保存阻塞在队列的任务(入队阻塞的时候,记录任务,任务按照优先级在列表中排序,由于消息队列已经满了,想要发送消息的任务就无法发送消息)

(7)、(出队阻塞)获取消息阻塞的一个列表,用来保存阻塞在队列的任务,任务按照优先级进行排序,由于队列是空的,想要获取消息是无法获取消息的。

(8)、用于记录当前消息队列的消息个数(如果消息队列用于信号量的时候,这个值代表有效信号量的个数)

用于信号量控制块的时候,表示有效信号量的个数(可用的信号量的个数)(对于二值信号量和互斥信号量,这个值就是10,对于计数信号量,这个值表示可用资源的多少)

(9)、表示消息队列的长度(可以存放多少个消息)

用于信号量控制块的时候,这个值表示最大的信号量的可用个数(对于二值信号量和互斥信号量值为1,对于计数信号量,这个值表示最大信号量的个数)

(10)、表示单个消息的大小 (单位是字节)

用于信号量控制块的时候,这个值为0,表示无存储空间

(11)(出队)队列上锁之后,存储从队列收到的一个列表项的数目,即出队的数量,如果队列没有上锁,就会设置为一个具体的宏

(12) (入队)队列上锁之后,存储从队列发送的一个列表项的数目,即入队的数量,如果队列没有上锁,就会设置为一个具体的宏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值