进程互斥和进程同步
一、进程互斥由于进程具有独立性和异步性等并发特征计算机的资源有限导致了进程之间的资源竞争和共享也导致了对进程执行过程的制约。1、临界资源和临界区临界部分临界资源一次只能供一个进程访问的资源。临界区把不允许多个并发进程交叉执行的一段程序称为临界区critical region或临界部分critical section。临界区是由属于不同并发进程的程序段共享公用数据或公用数据变量而引起的临界区不可能用增加硬件的方法来解决。因此临界区也可以被称为访问公用数据的那段程序。当一个进程使用该临界资源时其他需要访问该资源的进程必须阻塞直到占用者释放该资源。2、间接制约把这种由于共享某一公有资源而引起的在临界区内不允许并发进程交叉执行的现象称为由共享公有资源而造成的对并发进程执行速度的间接制约。这里的“间接”二字主要是指各并发进程的速度受公有资源的制约而非进程之间的直接制约。3、互斥互斥一组并发进程中的一个或多个程序段因共享某一公有资源而导致它们必须以一个不允许交叉执行的单位执行。也就是说不允许两个以上的共享该资源的并发进程同时进入临界区。一般情况下作为程序段的一个过程不允许多个进程同时访问它。但如果该过程是纯过程则各并发进程可以同时访问它。纯过程是指在执行过程中不改变过程自身代码的一类过程。进程同步方法1、临界区Critical Section:通过对多线程的串行化来访问公共资源或一段代码速度快适合控制数据访问。优点保证在某一时刻只有一个线程能访问数据的简便办法缺点虽然临界区同步速度很快但却只能用来同步本进程内的线程而不可用来同步多个进程中的线程。2、互斥量Mutex:为协调共同对一个共享资源的单独访问而设计的。互斥量跟临界区很相似比临界区复杂互斥对象只有一个只有拥有互斥对象的线程才具有访问资源的权限。优点使用互斥不仅仅能够在同一应用程序不同线程中实现资源的安全共享而且可以在不同应用程序的线程之间实现对资源的安全共享。缺点①互斥量是可以命名的也就是说它可以跨越进程使用所以创建互斥量需要的资源更多所以如果只为了在进程内部是用的话使用临界区会带来速度上的优势并能够减少资源占用量。因为互斥量是跨进程的互斥量一旦被创建就可以通过名字打开它。通过互斥量可以指定资源被独占的方式使用但如果有下面一种情况通过互斥量就无法处理比如现在一位用户购买了一份三个并发访问许可的数据库系统可以根据用户购买的访问许可数量来决定有多少个线程/进程能同时进行数据库操作这时候如果利用互斥量就没有办法完成这个要求信号量对象可以说是一种资源计数器。3、信号量Semaphore:为控制一个具有有限数量用户资源而设计。它允许多个线程在同一时刻访问同一资源但是需要限制在同一时刻访问此资源的最大线程数目。互斥量是信号量的一种特殊情况当信号量的最大资源数1就是互斥量了。优点适用于对Socket套接字程序中线程的同步。例如网络上的HTTP服务器要对同一时间内访问同一页面的用户数加以限制只有不大于设定的最大用户数目的线程能够进行访问而其他的访问企图则被挂起只有在有用户退出对此页面的访问后才有可能进入。缺点①信号量机制必须有公共内存不能用于分布式操作系统这是它最大的弱点②信号量机制功能强大但使用时对信号量的操作分散 而且难以控制读写和维护都很困难加重了程序员的编码负担③核心操作P-V分散在各用户程序的代码中不易控制和管理一旦错误后果严重且不易发现和纠正。4、事件Event: 用来通知线程有一些事件已发生从而启动后继任务的开始。优点事件对象通过通知操作的方式来保持线程的同步并且可以实现不同进程中的线程同步操作。

相关新闻

我用 Nix 重写 Docker 镜像构建,把镜像从 1.2GB 压到 80MB 且可复现

我用 Nix 重写 Docker 镜像构建,把镜像从 1.2GB 压到 80MB 且可复现

我用 Nix 重写 Docker 镜像构建,把镜像从 1.2GB 压到 80MB 且可复现 说实话,我一开始是拒绝用 Nix 的。 那天我们项目的 Node.js 镜像在生产环境又出问题了——同样是 node:20-slim 基础镜像,同样是 package.json 没变,但 CI 流水…

2026/7/28 17:06:45 阅读更多 →
Spring Boot + Shiro 等保三级复测实战:12行代码修复高危漏洞

Spring Boot + Shiro 等保三级复测实战:12行代码修复高危漏洞

1. 项目背景与核心挑战最近,我们团队负责维护的一套基于Spring Boot和Shiro的医疗信息系统,迎来了等保三级(网络安全等级保护第三级)的年度复测。对于非技术出身的同事可能不太清楚,等保三级是国内非银行机构的最高安全…

2026/7/28 17:05:45 阅读更多 →
Prompt 工程十大误区:从过度设计到缺少评测

Prompt 工程十大误区:从过度设计到缺少评测

Prompt 工程十大误区:从过度设计到缺少评测 基础设施不需要漂亮话。 Prompt 工程被很多人当成一门玄学,也有人觉得它是调参的艺术。实际上 Prompt 工程的核心矛盾是两个:过度设计和缺少评测。过度设计让 Prompt 变得不可维护,缺少…

2026/7/28 17:05:45 阅读更多 →

最新新闻

终极指南:浏览器端离线语音识别技术深度解析与Vosk-Browser实战

终极指南:浏览器端离线语音识别技术深度解析与Vosk-Browser实战

终极指南:浏览器端离线语音识别技术深度解析与Vosk-Browser实战 【免费下载链接】vosk-browser A speech recognition library running in the browser thanks to a WebAssembly build of Vosk 项目地址: https://gitcode.com/gh_mirrors/vo/vosk-browser 在…

2026/7/28 17:14:47 阅读更多 →
HS2-HF补丁:10分钟打造你的专属Honey Select 2游戏体验

HS2-HF补丁:10分钟打造你的专属Honey Select 2游戏体验

HS2-HF补丁:10分钟打造你的专属Honey Select 2游戏体验 【免费下载链接】HS2-HF_Patch Automatically translate, uncensor and update HoneySelect2! 项目地址: https://gitcode.com/gh_mirrors/hs/HS2-HF_Patch 你是否曾经因为语言障碍而错过了Honey Selec…

2026/7/28 17:14:47 阅读更多 →
安卓项目测试环境搭建

安卓项目测试环境搭建

文章目录项目简介项目功能为什么要给app客户端签名安装部署后台(后台开发人员负责)数据初始化(后台开发人员负责)运行后台(服务端软件)(后台开发人员负责)修改安卓客户端的配置&…

2026/7/28 17:14:47 阅读更多 →
linux系统的python3.6安装

linux系统的python3.6安装

准备:1.提前配置网络,配置yum源2.提前准备安装包,或者从官网下载(www.python.org)3.安装依赖包4.解压到指定目录编译安装路径及加密方式安装make && make install测试是否能使用(必须进入指定目录)…

2026/7/28 17:14:47 阅读更多 →
SpringMVC整合Mybatis的对象别名设置方式

SpringMVC整合Mybatis的对象别名设置方式

1.在mybatis_config.xml中Mybatis别名设置 <?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> &…

2026/7/28 17:14:47 阅读更多 →
Outfit字体终极指南:免费开源字体如何解决你的设计一致性难题?

Outfit字体终极指南:免费开源字体如何解决你的设计一致性难题?

Outfit字体终极指南&#xff1a;免费开源字体如何解决你的设计一致性难题&#xff1f; 【免费下载链接】Outfit-Fonts The most on-brand typeface 项目地址: https://gitcode.com/gh_mirrors/ou/Outfit-Fonts 还在为每个项目寻找不同字体而烦恼吗&#xff1f;还在为品牌…

2026/7/28 17:13:47 阅读更多 →

日新闻

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿&#xff01;3步让你的暗影精灵笔记本重获新生 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 你是否也曾为官方Om…

2026/7/28 0:00:43 阅读更多 →
RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

做 RAG 的人应该都踩过这个致命的坑&#xff1a;把几百页的财报、法规、技术手册扔给向量库&#xff0c;问一个具体问题&#xff0c;搜出来的全是沾边但没用的内容 —— 关键信息要么被硬切块拆碎了&#xff0c;要么藏在几十条结果的最下面。语义相似≠真正相关&#xff0c;这个…

2026/7/28 0:00:43 阅读更多 →
抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

2026年做短视频运营&#xff0c;从抖音上扒文案早就不是偷偷抄笔记的事了。我刚开始做内容的时候&#xff0c;每天刷半小时抖音&#xff0c;手动把爆款视频的口播敲进备忘录&#xff0c;一条2分钟的视频得花十来分钟&#xff0c;碰到语速快的还要反复回听。后来试了一圈工具&am…

2026/7/28 0:00:43 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档&#xff0c;可以直接使用&#xff01;系统支持图片、视频、摄像头等多种方式检测裂缝&#xff0c;功能强大实用。 1数据集6000张 8各类别

2026/7/28 12:04:22 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像&#xff01; pubg绝地求生目标检测数据集 1分类&#xff1a;e_body&#xff0c;14905个标签&#xff0c;txt格式 共计14244张图&#xff0c;99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/28 8:29:16 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别&#xff1a; allies enemy tag图片总量&#xff1a;7247张训练集&#xff1a;5139张验证集&#xff1a;1425张测试集&#xff1a;683张标注状态&#xff1a;全部已标注&#xff0c;即拿即用数据格式&#xff1a;支持YOLO格式及其他格式&#…

2026/7/28 5:03:42 阅读更多 →

月新闻