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

news2024/12/29 11:02:06

信号

  • 一.消息队列
    • 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.coloradmin.cn/o/1242874.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Jmeter+influxdb+grafana监控平台在windows环境的搭建

原理:Jmeter采集的数据存储在infuxdb数据库中,grafana将数据库中的数据在界面上进行展示 一、grafana下载安装 Download Grafana | Grafana Labs 直接选择zip包下载,下载后解压即可,我之前下载过比较老的版本,这里就…

【git】pip install git+https://github.com/xxx/xxx替换成本地下载编译安装解决网络超时问题

目录 🌑🌑 背景 🌒 🌒作用 🌔🌔 问题 🌔🌔解决方案 🌙方法一 🌙方法二 🌝🌝我的解决方案 整理不易,欢迎一键三连…

Exception in thread “消费者“ java.lang.IllegalMonitorStateException

这两天学习生产者消费者模型的时候,使用Java线程来实现,出现了一个问题“Exception in thread "消费者" java.lang.IllegalMonitorStateException”,并且,线程不结束。报错图片如下: 那我们怎么解决呢&…

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

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

创新建筑形式:气膜体育馆助力校园体育设施革新

体育场馆在校园中扮演着重要的角色,是学生们进行体育锻炼、比赛和各类体育活动的场所。传统的室内体育馆建设往往需要大量资金和漫长的建设周期,但随着气膜体育馆的崭露头角,校园体育设施的面貌正迎来一场革新。 快速搭建,灵活性极…

2023亚太杯数学建模APMCM竞赛C题思路讲解:基于ARIMA与机理模型进行预测

本文针对6大问题,从多角度分析了我国新能源电动汽车发展形势与前景。文中针对不同问题,采用了层次分析法、时间序列模型、机理模型、回归模型等数学方法。并结合实例数据,对相关模型进行求解,以量化预测了新能源电动汽车在政策驱动、市场竞争、温室气体减排等多个方面的潜在贡献…

这样写Allure生成测试报告,学会直接涨薪5k

Allure是一个开源的测试报告生成框架,提供了测试报告定制化功能,相较于我们之前使用过pytest-html插件生成的html格式的测试报告,通过Allure生成的报告更加规范、清晰、美观。 pytest框架支持使用Allure生成测试报告,接下来让介绍…

低代码开发与IT开发的区别

目录 一、含义不同 二、开发门槛不同 三、两者之间的区别 1、从技术特征来看 2、从目标开发者来看 四、低代码平台使用感受? (1)自定义模块,满足不同的业务需求 (2)工作流引擎,简化复杂流程的管…

什么是数据确权?

在数字化时代,数据已经成为一种新型资产,”新的石油“,具有巨大的价值,未来世界经济竞争一定程度上是数字经济的竞争,而非工业的竞争。数据相关法律制度,尚且还不完整,推动数字经济的发展&#…

OpenAI 曾收到 AI 重大突破警告;半独立的 OpenAI 比与微软合并更好丨 RTE 开发者日报 Vol.91

开发者朋友们大家好: 这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE (Real Time Engagement) 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文…

leetcode (力扣) 97. 交错字符串(动态规划)

文章目录 题目描述思路分析完整代码 题目描述 给定三个字符串 s1、s2、s3,请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的。 两个字符串 s 和 t 交错 的定义与过程如下,其中每个字符串都会被分割成若干 非空 子字符串: s s1 s2 … sn t …

Linux应用开发基础知识——I2C应用编程(十二)

前言: I2C(Inter-Integrated Circuit BUS)是集成电路总线,是目前应用最广泛的总线之一,最初由PHILIPS(现为NXP)设计。它使用多主从架构,主要用于连接低速周边设备。I2C总线在硬件物理…

Linux基础命令4

find查找操作 1.文件名 上图中,一共有4个部分,分别是find,搜索路径,-name,文件名 find加上文件的路径(也就是要查找的文件在根目录下的usr目录下的bin目录底下) 加上 -name 加上文件名&a…

斐波那契数列数列系列问题详解

斐波那契数列数列是我们学习递归的入门问题,是一种非常经典的题型,也衍生出了一些更复杂的题型,这一节就让我们彻底理解斐波那契数列系列问题。 一、概念介绍 1、什么是斐波那契数列? 斐波那契数列(Fibonacci sequenc…

手持式无线通信频谱分析仪 MS2713E

MS2713E 手持式无线通信频谱分析仪 安立手持式无线通信频谱分析仪 MS2713E 旨在处理最恶劣的现场条件,使您能够监控、定位、识别和分析各种蜂窝、2G/3G/4G、陆地移动无线电、Wi-Fi 和广播信号。多功能 Spectrum Master 在定位和识别宽频率范围内的信号时&#xff0…

第7章-使用统计方法进行变量有效性测试-7.4.2-多元线性回归

目录 多元线性回归模型 总体回归函数 样本回归函数 线性回归模型的假定 普通最小二乘法(Ordinary Least Squares,OLS) 拟合优度指标 F检验 回归系数的t检验 Python中构建多元线性回归模型 数据理解 数据读取 数据清洗 相关分析 …

短视频账号矩阵系统saas化批量管理部署搭建/技术

一、短视频矩阵系统建模----技术api接口--获取用户授权 技术文档分享: 本系统采用MySQL数据库进行存储,数据库设计如下: 1.用户表(user): - 用户ID(user_id) - 用户名(…

快来考试拿证书!KubeSphere 个人技能专业考试认证上线啦!

以容器技术和容器编排为基础的云原生应用,被越来越多的企业用户接受和使用,并且在生产环境中使用容器技术的比例逐年增加。Kubernetes 无疑已经成为容器编排的事实基础,而依托于 Kubernetes 开发的开源容器平台 KubeSphere 也收获了一众拥趸。…

2023 年 亚太赛 APMCM (A题)国际大学生数学建模挑战赛 |数学建模完整代码+建模过程全解全析

当大家面临着复杂的数学建模问题时,你是否曾经感到茫然无措?作为2022年美国大学生数学建模比赛的O奖得主,我为大家提供了一套优秀的解题思路,让你轻松应对各种难题。 完整内容可以在文章末尾领取! 问题1 图像处理&am…

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

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