2023.02.03

复习进程间通信的7种方式,总结出他们的优点。

一  内核提供的原始通信方式有三种
1、有名管道和无名管道

有名管道和无名管道都属于管道通信,通过在内核空间创建一个特殊的文件(管道文件),一个进程将数据写入管道,另一个进程从管道中读取数据,从而实现通信。管道文件是特殊的文件,不用于存储数据,仅仅只是用来完成进程间数据的交流

无名管道只适用于亲缘进程间的通信,需要在fork之前将管道文件打开,创建子进程后,子进程继承一份管道的文件描述符才能使用该管道。而有名管道既可以用于亲缘进程的通信,也可以用于非亲缘进程的通信

缺点:1、管道文件的操作是一次性的,当从管道中将写入的文件读取出来后,该消息就不存在了

2、管道通信属于一种半双工通信方式,同一时刻,只能由A向B发送数据或者B向A发送数据,要想实现双工,就得创建两个无名管道。

2、信号

1、信号是软件模拟底层硬件的中断操作,中断:打断当前正在进行的事情,去做另一件事

 2、用户可以给某个进程发送信号,一个进程也能给另一个进程发送信号,内核也可以给某个进程发送信号

3、信号是软件实现的,中断是硬件实现的

4、信号是linux内核实现的,没有linux,就没有信号的概念

5、当一个进程收到信号后的操作有三种:默认(一般是杀死进程)、捕获、忽略

优点:实时性高,可用于处理异步事件。

缺点:信号的信息量有限,只能表示事件的发生,无法携带额外的信息。

二 System V提供的三种通信方式
1、消息队列

消息队列允许进程以消息的形式交换信息。每个消息都有一个类型,接收者可以根据类型选择接收的消息。

优点:具有一定的灵活性,可以通过消息类型进行筛选。

缺点:消息队列的大小受到系统参数的限制。

2、共享内存

共享内存的操作不是一次性的,当共享内存段中的数据被读取后,依然存在

优点:共享内存是所有进程间通信方式中效率最高的,原因是,操作共享内存段时,无需进行用户空间和内核空间的切换

缺点:需要手动控制进程之间的同步,否则可能会出现竞态条件。

3、信号量(信号灯集)

信号量是完成多个进程之间同步问题的。信号量可以解决进程或线程间的临界区问题,避免数据不一致。

优点:能有效控制对共享资源的并发访问。

缺点:需要程序员显式地进行控制,使用不当容易造成死锁。

三  套接字通信:socket

套接字可以用于不同机器上的进程间通信,也可以用于同一机器上的进程间通信。套接字支持 TCP 和 UDP 通信协议。

优点:支持跨网络的进程间通信,支持多种通信协议。

缺点:相比于其他本地通信机制,速度稍慢。

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

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

相关文章

互补滤波算法介绍+SCL源代码(收放卷线速度处理)

工程上对测量信号进行处理,我们可以利用低通滤波器,还可以利用滑动平均值滤波等,关于低通滤波器和滑动平均值滤波器,可以参考专栏相关文章,常用链接如下: 博途PLC一阶滞后低通滤波器(支持采样频率设置) https://rxxw-control.blog.csdn.net/article/details/132972093h…

带着问题读源码——Spring MVC是怎么找到接口实现类的?

引言 我们的产品主打金融服务领域,以B端客户为我们的核心合作伙伴,然而,我们的服务最终将惠及C端消费者。在技术实现上,我们采用了公司自主研发的微服务框架,该框架基于SpringBoot,旨在提供高效、可靠的服…

MyBatis笔记梳理

文章目录 什么是 MyBatis?前期准备依赖配置文件mapper利用注解 增、删、改、查查增改删#{} 和 ${} 的区别类型别名 动态sqlwhere ifforeachsql引用不常用标签 多表查询多对一(一对一)一对多多对多多表查询 个人理解 延迟加载概念使用场景延迟…

Qt/C++音视频开发66-音频变速不变调/重采样/提高音量/变速变调/倍速播放/sonic库使用

一、前言 之前在做倍速这个功能的时候,发现快速播放会有滴滴滴的破音出现,正常1倍速没有这个问题,尽管这个破音间隔很短,要放大音量才能听到,但是总归是不完美的,后面发现,通过修改qaudiooutpu…

PyTorch中tensor.backward()函数的详细介绍

backward() 函数是PyTorch框架中自动求梯度功能的一部分,它负责执行反向传播算法以计算模型参数的梯度。由于PyTorch的源代码相当复杂且深度嵌入在C底层实现中,这里将提供一个高层次的概念性解释,并说明其使用方式而非详细的源代码实现。 在P…

2024年美赛数学建模E题思路分析 - 财产保险的可持续性

# 1 赛题 问题E:财产保险的可持续性 极端天气事件正成为财产所有者和保险公司面临的危机。“近年来,世界已经遭受了1000多起极端天气事件造成的超过1万亿美元的损失”。[1]2022年,保险业的自然灾害索赔人数“比30年的平均水平增加了115%”。…

[Java]JDK 安装后运行环境的配置

这篇文章用于介绍jdk.exe安装之后的运行环境配置,以及如何检查是否安装成功 检查自己是否安装jdk环境,记住这个安装的改的路径: (应该要安装2个,一个是jdk,一个是jre) 安装后的在文件夹的样子(路径自定义,在java下面): 参考如下…

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul

第四章_Eureka服务注册与发现 1.Eureka基础知识 1.1Eureka工作流程-服务注册 1.2Eureka两大组件 2.单机Eureka构建步骤 IDEA生成EurekaServer端服务注册中心,类似于物业公司 EurekaClient端cloud-provider-payment8081将注册进EurekaServer成为服务提供者provide…

MySQL对JSON数据内对象进行更新

UPDATE表名 SET字段名 CASE WHENJSON_EXTRACT(字段名,$.字段里的对象名.对象内部字段名) IS NOT NULLTHENJSON_SET (字段名,"$.字段里的对象.对象内部字段",更新后的值)ELSEJSON_INSERT (字段名,"$.字段里的对象名",JSON_OBJECT("对象内部字段名&quo…

Pytest框架测试

Pytest 是什么? pytest 能够支持简单的单元测试和复杂的功能测试;pytest 可以结合 Requests 实现接口测试; 结合 Selenium、Appium 实现自动化功能测试;使用 pytest 结合 Allure 集成到 Jenkins 中可以实现持续集成。pytest 支持 315 种以上的插件;为什么要选择 Pytest 丰…

14:Servlet中的页面跳转-Java Web

目录 14.1 前端请求与后端响应14.2 Servlet中常见的页面跳转方式14.3 区别总结14.4 注意事项14.5 应用场景总结 在构建Java Web应用时,Servlet作为处理HTTP请求的核心组件,其页面跳转功能是实现用户交互和流程控制的关键一环。本文将深入剖析Servlet中的…

VUE项目导出excel

导出excel主要可分为以下两种: 1. 后端主导实现 流程:前端调用到导出excel接口 -> 后端返回excel文件流 -> 浏览器会识别并自动下载 场景:大部分场景都有后端来做 2. 前端主导实现 流程:前端获取要导出的数据 -> 把常规数…

跨平台开发:浅析uni-app及其他主流APP开发方式

随着智能手机的普及,移动应用程序(APP)的需求不断增长。开发一款优秀的APP,不仅需要考虑功能和用户体验,还需要选择一种适合的开发方式。随着技术的发展,目前有多种主流的APP开发方式可供选择,其…

亚马逊新店铺视频怎么上传?视频验证失败怎么办?——站斧浏览器

亚马逊新店铺视频怎么上传? 登录亚马逊卖家中心:首先,卖家需要登录亚马逊卖家中心。在登录后,可以点击左侧导航栏上的“库存”选项,然后选择“新增或管理商品”。 选择商品:接下来,在“新增或…

【Vue】3-2、组合式 API

一、setup 选项 <script> export default {/*** 1、setup 执行时机早于 beforeCreate* 2、setup 中无法获取 this* 3、数据和函数需要在 setup 最后 return&#xff0c;才能在模板中使用* 4、可以通过 setup 语法糖简化代码*/setup(){// console.log(setup function, thi…

云服务器安全组、防火墙、端口问题,结合telnet解决项目部署无法访问

无论是运维还是后台亲自操刀在云服务器上部署项目&#xff0c;往往会遇到项目部署上去了&#xff0c;也确定项目正常运行&#xff0c;但还是没法访问的问题。 如果没有经验的小伙伴&#xff0c;很容易陷入疑惑的状态&#xff0c;无从下手解决。 其实这涉及到云平台安全组、服…

计算机毕业设计社区居民服务管理系统SSM

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; vue mybatis Maven mysql5.7或8.0等等组成&#xff0c;B…

25.云原生之ArgoCD-app of apps模式

文章目录 app of apps 模式介绍app如何管理apphelm方式管理kustomize方式管理 app of apps 模式介绍 通过一个app来管理其他app&#xff0c;当有多个项目要发布创建多个app比较麻烦&#xff0c;此时可以创建一个管理app&#xff0c;管理app创建后会创建其他app。比较适合项目环…

新公司实习有感

转眼来到腾娱互动科技有限公司已经半年多&#xff0c;记录一下目前的感受。首先先介绍一下这个公司&#xff0c;可能看到“腾”字你已经想到了&#xff0c;没错&#xff0c;这是腾讯全资的子公司&#xff0c;定位跟腾讯云智类似&#xff0c;本质是降本增效的产物。腾娱主要是负…

【Power Platform】实现对SharePoint文档库中上传的文件进行审批

这次要分享的案例还是来自于我们客户的一个新需求。 我们这个客户主要是在使用SharePoint的List来搭建申请单&#xff0c;然后对申请单进行审批&#xff0c;但由于我们之前给客户提出的生成PDF打印件的方案&#xff0c;是需要先在SharePoint或OneDrive中放一个文档模板的&…