【Linux】:消息队列和信号量

信号

  • 一.消息队列
    • 1.原理
    • 2.消息队列的各种接口
      • 1.创建消息队列
      • 2.释放消息队列
      • 3.发送和接收信息
  • 二.信号
    • 1.概念
    • 2.各种接口
      • 1.创建信号量
      • 2.销毁信号量
      • 3.对信号量进行操作
  • 三.一个现象

一.消息队列

1.原理

在这里插入图片描述

这种消息队列被称为system V标准。

可以使用ipcs -q来查询消息队列,用ipcrm -q+msqid来删除消息队列。

2.消息队列的各种接口

1.创建消息队列

在这里插入图片描述

第一个参数

在这里插入图片描述

第二个参数

在这里插入图片描述

2.释放消息队列

在这里插入图片描述

第一个参数:就是msgget的返回值(队列的唯一标识符)

第二个参数:要进行什么操作。(有许多参数可以自行查看,这里使用 IPC_RMID删除该队列)

第三个参数:各种队列的的属性。

3.发送和接收信息

发送消息

在这里插入图片描述

第一个参数:队列的唯一标识符。

第二个参数:数据块的起始地址。

在这里插入图片描述

第三个参数:数据块的大小。

第四个参数

在这里插入图片描述

接收消息

在这里插入图片描述

前三个和第五个参数与读一致。

第四个参数:读取数据的类型。

二.信号

1.概念

在这里插入图片描述

解释一个现象:多进程,多并发打印时会屏幕出现错乱,命令行重叠…就是因为屏幕也是文件,没有进行互斥保护。

理解信号量(信号灯)

信号量(灯)的本质就是一个计数器。描述临界资源的资源数。

在这里插入图片描述

如果一个临界资源只能由一个执行流访问,像这种只有0,1两态的计数器称为二元信号量–本质就是一个锁!

PV操作

申请信号量,简单来说就是对计数器减减——P操作。 释放信号量,简单来说就是对计数器加加——V操作。
申请和释放的PV操作——原子的(要么不做,要么就做完,没有正在做的概念)。

2.各种接口

1.创建信号量

在这里插入图片描述

第一个参数:key值可以参考共享内存和消息队列的key值,就不再过多描述。

第二个参数:要创建信号的数量。

第三个参数:也参考共享内存和消息队列的flg。

返回信号量的唯一标识符。

2.销毁信号量

在这里插入图片描述

第一个参数:信号量标识符。

第二个参数:信号量个数。

第三个参数:可以传各种控制操作(传IPC_RMID表示删除)。

3.对信号量进行操作

在这里插入图片描述

第一个参数:信号量唯一标识符。
第二个参数:需要自定义一个sembuf类型的结构体,里面要包含操作哪一个信号量,信号量的操作(1代表实现V操作,-1代表实现P操作)

在这里插入图片描述

三.一个现象

不论是之前的共享内存,还是消息队列,还是信号量…这些systemV类型通信方式,它都会先进行组织,也就是建立对应属性的结构体。

共享内存

在这里插入图片描述

消息队列

在这里插入图片描述

信号量

在这里插入图片描述

这些结构体的第一个参数都是struct ipc_perm类型。操作系统统一将这一类的结构体的地址存放在struct ipc_permarr[]数组里。所以如果我们需要对资源进行增删查改就转化成了对该数组进行增删查改。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/210993.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

某基金公司赵哥“逆袭”了!!!

赵哥,在上海一家基金公司做运维主管。 平时工作的首要任务,就是保障公司各项信息系统的安全运行。 万一系统运行中出现了一些重要问题,他还要负责进行调查、记录与汇报... 总之,责任很重,该说不说,搞不好…

gitt开源项目的意义,公司为什么会对在gitt上有开源项目的人更大机会

Git是一种分布式版本控制系统,它可以帮助程序员管理代码的历史版本和协同工作。同时,Git也成为了开源项目的主要托管平台之一。Git的开源项目意义重大,因为这种开源项目托管平台可以帮助开发者将代码和项目分享给全球的开发者,并且…

Sui第七轮资助:八个项目共获得超过50万美元的资助

今日,Sui基金会宣布了本月获得资助的项目方,他们将获得超过50万美元的资助金,用于构建项目,推动Sui的采用和发展。要获得资助,项目必须提交提案,详细说明他们正在构建的内容、预算明细、关键里程碑、团队经…

Excel中出现“#NAME?”怎么办?(文本原因)

excel 单元格出现 #NAME? 错误的原因有二: 函数公式输入不对导致 #NAME? 错误。 在单元格中字符串的前面加了号,如下图中的--GoJG7sEe6RqgTnlUcitA,本身我们想要的是--GoJG7sEe6RqgTnlUcitA,但因为某些不当的操作在前面加了号&…

基于单片机设计的大气气压检测装置(STC89C52+BMP180实现)

一、前言 本项目设计一个大气气压检测装置,该装置以单片机为基础,采用STC89C52作为核心控制芯片,结合BMP180模块作为气压传感器。大气气压,也就是由气体重力在大气层中产生的压力,其变化与天气预报、气象观测以及高度…

猫罐头选哪个牌子?口碑好的5款猫罐头推荐给新手养猫人!

很多人家里的哈基米是不是吃猫粮吃腻了,或者猫猫平时不喜欢喝水,又或者看猫猫太瘦了想入手几款猫罐头但是又愁于不会选择。而且现在猫罐头风这么大不知道选什么好~ 作为一个从事宠物行业7年的宠物店店长,看到很多新手羊毛人来店里咨询怎么给猫…

WorkPlus即时通讯,打通上下游产业链,构建企业生态圈

如今,随着信息技术的迅速发展,智慧水务、智慧医疗、智慧城市、智慧教育、智慧政务等领域正蓬勃发展。在这个智慧时代,企业需要一个具备开放性和扩展性的平台级产品,以满足多样化的业务需求。WorkPlus作为一款全新的移动底座产品&a…

无损压缩技巧:减小PDF文件尺寸的有效方法

我们在制作pdf文档的时候,会加入许多内容,文字、图片等等,素材添加的过多之后就会导致pdf文档特别大,在上传或者储存时,就会特别不方便,所以今天就告诉大家一个pdf压缩的方法,使用pdf在线压缩工…

使用支付宝的沙箱环境在本地配置模拟支付并发布至公网调试

文章目录 前言1. 下载当面付demo2. 修改配置文件3. 打包成web服务4. 局域网测试5. 内网穿透6. 测试公网访问7. 配置二级子域名8. 测试使用固定二级子域名访问9. 结语 前言 在沙箱环境调试支付SDK的时候,往往沙箱环境部署在本地,局限性大,在沙…

String 真的不可变吗?

为什么 String 类不可变 final修饰符: String类被声明为final,这意味着它不能被继承。因此,无法创建String的子类来修改其行为。私有字符数组(char[]): String类内部使用私有的字符数组来存储字符串的内容…

仿ChatGPT对话前端页面(内含源码)

仿ChatGPT对话前端页面(内含源码) 前言布局样式和Js部分关键点全部源码 前言 本文主要讲解如何做出类似ChatGPT的前端页面。具体我们的效果图是长这样,其中除了时间是动态的之外,其他都是假数据。接下来让我们从布局和样式的角度…

品牌小红书koc投放策略分享,纯干货!

作为中国具有影响力的时尚美妆社交平台,小红书与其充满活力的用户群体成为品牌寻找优质KOC合作的理想平台。本文伯乐网络传媒将探讨品牌如何利用小红书的KOC投放策略,实现更广泛的市场覆盖和更有效的品牌营销。 一、明确目标受众与KOC合作需求 在开始策…