news 2026/5/9 11:10:50

5、进程间通信:信号量、消息协议与网络通信

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
5、进程间通信:信号量、消息协议与网络通信

进程间通信:信号量、消息协议与网络通信

1. 共享数据中的信号量使用

1.1 共享数据的风险

考虑一个银行账户管理的场景,父进程创建两个子进程,一个负责存款,另一个负责取款。每个子进程在处理时都会计算新的账户余额。如果两个交易(一个存款,一个取款)几乎同时到达,就有可能出现一个交易被取消的情况。

例如,取款进程从共享内存中获取余额,减去取款金额后,被存款进程中断。存款进程从共享内存中获取相同的余额,加上存款金额,将新的余额放回共享内存,然后等待下一次存款交易。而取款进程继续处理,将其重新计算的余额放回共享内存,覆盖了存款进程设置的值,导致存款交易丢失。

1.2 信号量的概念

信号量是一种用于保护共享数据完整性的机制。它并不直接阻止其他进程修改共享数据,就像红灯并不绝对阻止车辆进入十字路口一样,而是通过一种约定来协调进程的访问。

每个信号量与一个共享资源相关联,这种关联是通过源代码注释和其他文档间接实现的。信号量只有设置和未设置两种状态,操作系统只关心这一点。如果尝试设置一个未设置的信号量,操作系统会将其设置;如果尝试设置一个已设置的信号量,操作系统会使进程等待,直到最后一个设置它的进程将其清除。

1.3 使用信号量的银行交易示例

为了避免银行交易示例中的问题,存款和取款进程在从共享内存中获取余额之前都必须设置信号量,在将重新计算的余额放回共享内存后再清除信号量。以下是实现代码:

#include <sys/types.h> #include <sys/ipc.h> #incl
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/8 23:53:23

20ms响应+12亿参数:Liquid AI LFM2-1.2B重塑边缘智能范式

20ms响应12亿参数&#xff1a;Liquid AI LFM2-1.2B重塑边缘智能范式 【免费下载链接】LFM2-1.2B 项目地址: https://ai.gitcode.com/hf_mirrors/LiquidAI/LFM2-1.2B 导语 Liquid AI推出的LFM2-1.2B模型以12亿参数实现传统270亿参数模型性能&#xff0c;CPU推理速度较同…

作者头像 李华
网站建设 2026/5/8 21:46:17

从零构建技术工具的完整指南:5步掌握核心原理

从零构建技术工具的完整指南&#xff1a;5步掌握核心原理 【免费下载链接】build-your-own-x 这个项目是一个资源集合&#xff0c;旨在提供指导和灵感&#xff0c;帮助用户构建和实现各种自定义的技术和项目。 项目地址: https://gitcode.com/GitHub_Trending/bu/build-your-…

作者头像 李华
网站建设 2026/5/9 2:29:58

COLMAP十年技术革新:从单目到多传感器重建的完整演进

COLMAP十年技术革新&#xff1a;从单目到多传感器重建的完整演进 【免费下载链接】colmap COLMAP - Structure-from-Motion and Multi-View Stereo 项目地址: https://gitcode.com/GitHub_Trending/co/colmap 在计算机视觉快速发展的十年间&#xff0c;COLMAP作为开源三…

作者头像 李华
网站建设 2026/5/9 2:46:54

Higress v2终极迁移宝典:5分钟零中断升级全流程

还在为网关升级导致的服务中断而焦虑&#xff1f;担心配置迁移过程复杂耗时&#xff1f;本文为你揭秘Higress v1到v2的平滑迁移方法&#xff0c;无需停服、无需重配&#xff0c;5步搞定全流程。作为下一代云原生网关&#xff0c;Higress v2在架构稳定性、AI集成能力和插件生态方…

作者头像 李华
网站建设 2026/5/9 0:35:42

终极指南:5步完成Deep-Live-Cam实时面部特效部署

终极指南&#xff1a;5步完成Deep-Live-Cam实时面部特效部署 【免费下载链接】Deep-Live-Cam real time face swap and one-click video deepfake with only a single image 项目地址: https://gitcode.com/GitHub_Trending/de/Deep-Live-Cam 实时面部特效技术正改变着视…

作者头像 李华