Linux操作系统之进程间通信—信号量

2023-11-10

一、信号量的定义?

信号量是一个特殊的变量,一般取正数值。它的值代表允许访问的资源数目,获取资源时,需要对信号的值进行原子减一,该操作被称为p操作。当信号量值为0时,代表没有资源可用,p操作会阻塞。释放资源时需要对信号量的值进行原子加一,该操作称为V操作。信号量主要用来同步进程。信号量如果只取0,1,将其称为二值信号量。如果信号量的值大于1,则称之为计数信号量。

二、信号量的使用

操作信号量的接口介绍:

semget() 创建或者获取已存在的信号量
在这里插入图片描述

semop() 对信号量进行改变P操作 ,或者V操作
在这里插入图片描述

semctl() 控制信号量
加粗样式
首先对函数进行封装
sem.h头文件
在这里插入图片描述
sem.c 进行函数实现
1、sem_init()函数
在这里插入图片描述
2、sem_p()函数
在这里插入图片描述
sem_v()函数
在这里插入图片描述
4.sem_destory函数
在这里插入图片描述
设置两个进程a.c 、b.c
1、a.c
在这里插入图片描述
2、b.c
在这里插入图片描述
运行结果
只能为:AABBAABBAABBAABBAABB
原因:AABBAABB只能成对的出现才能代表进程同步机制。

三、ipcs的使用

ipcs 查看消息队列,共享内存,信号量
在这里插入图片描述
ipcrm -s semid 删除信号量

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux操作系统之进程间通信—信号量 的相关文章

随机推荐

  • 微信小程序之生成图片分享 二维码分享 canvas绘制

    如果本文对你有用 请爱心点个赞 提高排名 帮助更多的人 谢谢大家 如果解决不了 可以在文末进群交流 添加画布 首先 在小程序里进行绘图操作需要用到
  • css3动画 提交成功圆圈画对勾

    这里写目录标题 提交成功圆圈画对勾 遇到的问题 问题一 对号的动画要在圆圈执行完动画后执行 解决 问题二 css不能在display none和display block之间进行动画 解决 代码 提交成功圆圈画对勾 这是一个动画效果 可以直
  • Java多线程进阶(JUC)

    1 什么是JUC JUC实际上是Java包的缩写 java util concurrent包 2 回顾线程和进程 1 进程 一个程序 例如QQ exe 进程是程序的集合 进程是CPU调度的基本单位 一个进程可以有多个线程 至少包含一个 Ja
  • python3.7的版本号安装tensorflow

    步骤 1 下载tensorflow的whl包 由于tensorflow还没有官方支持python3 7 所以pip直接是搜索不到合适的tensorflow的 所以需要下载whl文件包手动安装 有人说google的网址上不去没法下载 解决办法
  • STM32驱动MPU6050基于IIC协议

    一 简介 MPU6050是一款六轴陀螺仪 可以通过IIC协议输出三个方向上的加速度和角速度 在平衡车和飞控中较为常见 一般情况下 模块有用的引脚只有四个 其它的不常用 即VCC GND SDA和SCL 操作它的第一步 即编写IIC协议 二
  • Echarts给折线图给横竖坐标轴添加箭头与标签文字过长显示不全处理

    本人在做监控数据大屏时曾踩过不少坑 现将踩坑经验总结如下 数据大屏demo请点击这里 一 饼图处理标签文字过长而显示不全的解决方案 在使用echarts的过程中 有时会遇到标签文字过长导致显示不全的问题 如下图 例如图中检查结果和处罚种类都
  • 设计模式(1) - UML类图

    1 前言 从这一节开始 我们将一起学习设计模式 我们的学习目标是什么呢 了解常用设计模式以及它们的使用场景 分析实际工程中设计模式的使用 揣摩实际意图 了解作者设计思路 尝试运用设计模式迭代 重构自己的代码 提升软件架构设计思路 最近在阅读
  • react绝对定位导致onClick点击事件不生效,设置了z-index也无效

    这是我最近在开发中遇到的问题 网上也查看了资料 有说 因为点击的 不是当前元素 给元素 设onClike事件的元素 设置z index 就可以解决 有基础的都知道 数值越大层级越高 可是 我设置了没有效果 看了很多示例 也没有我这样的情况
  • integer和long源代码解析

    一 简介 1 Integer和Long的联系与区别 2 源代码中的享元模式 3 常用的方法 二 Integer和Long的联系与区别 相同点 Ingeter和Long都是包装类 初值为null 通过equals比较变量是否相同 在一定的范围
  • Spring Data Elasticsearch篇(1):常用注解

    1 注解 Document 1 1 Document源码 Persistent Inherited Retention RetentionPolicy RUNTIME Target ElementType TYPE public inter
  • 微信小程序简单入门经历分享 [完全新人向+网站分享+心得分享]

    本文适用于 完全不懂小程序的在校学生扫盲 这篇文章是在大二时差不多在跟着老师做了个小程序以后 对小程序有所认识以后 想起来一开始踩过的坑和迷茫 希望大家有一些避开坑的方式 本文由CSDN博主啊七王子原创手打 转载请注明出处 侵权必究 啊七王
  • java中类什么时候被加载

    创建对象实例时 new public class codeblock public static void main String args 创建对象实例时 new 类被加载 AA aa new AA 运行结果 AA的静态代码块被执行 cl
  • mac中查看.ssh文件

    因为一些原因需要重新生成github的ssh Key 但是找不到之前的安装路径的了 好在我是选择默认路径的 因此要找到ssh文件夹下的id rsa pub文件 只需要 打开终端输入 plain view plain copy open ss
  • 【分布式锁】三种分布式锁的实现【原创】

    分布式锁 0x00 概述 0x02 实现方式 0x03 分布式锁 基于数据库 1 实现思想 A 悲观锁 排他锁 B 乐观锁 2 优缺点 0x04 分布式锁 基于Zookeeper 1 实现思想 2 优缺点 0x05 分布式锁 基于Redis
  • Ant之build.xml详解

    Ant之build xml详解 Ant的概念 可能有些读者并不连接什么是Ant以及入可使用它 但只要使用通过Linux系统得读者 应该知道make这个命令 当编译Linux内核及一些软件的源程序时 经常要用这个命令 Make命令其实就是一个
  • 关于&&运算符的机制以及=和>的运算优先级

    今天碰到问题的代码是这样的 最开始以为会输出3 以为 和 gt 的优先级一样 后来查询发现比较运算符的优先级大于赋值运算符 于是觉得输出应该是0 结果输出2 经查询发现是 在判断前一个条件为0后就不会再去判断第二个条件了 以前没见过这个说法
  • 第九届GIS技能应用大赛试题技术文档 -上午

    1 项目概述 1 1 项目要求 如图1 1 1所示为雷尼尔山国家公园 根据题目要求 现有一份雷尼尔山国家公园地形图的一部分扫描图 需要利用该扫描图制作三维模型用来分析和展示 图1 1 1 雷尼尔山国家公园 1 具体任务要求如下 任务一 使扫
  • 递归锁(Recursive Lock)也称为可重入互斥锁(reentrant mutex)

    递归锁 Recursive Lock 也称为可重入互斥锁 reentrant mutex 是互斥锁的一种 同一线程对其多次加锁不会产生死锁 递归锁会使用引用计数机制 以便可以从同一线程多次加锁 解锁 当加锁 解锁次数相等时 锁才可以被其他线
  • response对象设置返回状态_测试开发专题:spring-boot自定义异常返回

    上文测试开发专题 spring boot统一异常捕获我们讨论了java异常以及如何使用Spring Boot捕获异常 但是没有去说捕获异常后该如何进一步处理 这篇文章我们将对这个遗留的问题进行讨论 统一错误响应定义 我们希望在程序发生异常的
  • Linux操作系统之进程间通信—信号量

    文章目录 一 信号量的定义 二 信号量的使用 三 ipcs的使用 一 信号量的定义 信号量是一个特殊的变量 一般取正数值 它的值代表允许访问的资源数目 获取资源时 需要对信号的值进行原子减一 该操作被称为p操作 当信号量值为0时 代表没有资