当前位置: 首页 > news >正文

用信号量机制实现互斥,同步,前驱

实现进程互斥

1.分析并发进程的关键活动,划定临界区(如:对临界资源打印机的访问)

2.设置互斥信号量mutex,初始值为1 (mutex n.互斥)

3.进入区P(mutex)--申请资源

4.退出区V(mutex)--释放资源

注意:

对于不同的临界资源需要设置不同的互斥信号量mutex

P/V操作必须成对出现,缺少P就不难保证临界资源的互斥访问,缺少V就会导致资源永不被释放

实现进程同步

让各并发进程按照要求有序进行推进。

P1,P2并发执行,由于存在异步性,二者交替推进的次序是不确定的。

若P2的代码4要基于p1的代码1和代码2的运行结果才能执行,就必须保证代码4一定要在代码2之后执行

P1(){代码1;代码2;代码3;
}
P2(){代码4;代码5;代码6;
}

我们分析在什么地方需要实现同步关系,必须保证以前以后之心两个操作,会哦这两句代码,设置同步信号量S,初始值为0

semaphore S=0;//初始化信号量,初始值为0P1(){代码1;代码2;V(S);代码3;
}
P2(){P(S);代码4;代码5;代码6;
}

当先执行p1再执行p2的时候

执行完代码1和2,S++变为了1

然后执行到P(S)时,表示有可用资源,执行S(--)S的值会变回0

P2进程不会执行block原语,而是继续往下执行代码4

如果先执行p2再执行p1

由于S=0,S--后变为了-1,表示这个时候没有可用的资源,因此会执行block原语,主动请求阻塞

等执行完代码1和代码2后,执行V(S)让S++,S变回0

此时S的值依然<=0因此执行wakeup指令,唤醒P2进程,此时p2可继续执行代码4

实现前驱关系

进程P1中有一句代码S1,P2中又一句代码S2,P3中...这些代码要求按照一定的顺序来执行

此时每一对前去关系都是一个进程同步的问题(需要保证一前一后操作)

1.要为每一对前去关系各设置一个信号同步量

2.在前操作之后对响应的同步信号量执行V操作

3.在后操作之前对响应的同步信号量执行P操作

前V后P

http://www.rkmt.cn/news/13878.html

相关文章:

  • AxC杂题乱做
  • Apache Hive 如何在大内容中发挥能量
  • 基于遗传优化的SVM织物瑕疵类型识别matlab仿真 - 实践
  • IOS-和安卓-AR-游戏开发指南-全-
  • Winform/C# 输出到Release VS中Release模式下生成去掉生成pdb文件
  • 供应商协同平台:打造高效安全供应链的关键
  • NSIS为当前用户安装和为所有用户安装的选择
  • 数据中台厂商选型|解决方案厂商与独立中台厂商详细解读
  • 实用指南:Qt容器QList、QLinkedList、QVector特性浅谈
  • 0voice-2.1.4-http服务器的实现
  • Group Theory Note
  • CF *2600 思维题 2
  • 2025年,CRM口碑排行榜:从SAAS到本地部署方案
  • Commitlint 使用指南
  • VonaJS提供的读写分离,直观,优雅
  • GreenPlum - commit
  • 忍了一年,我的SAAS CRM终于到期了!
  • 免费发布网站html
  • PySimpleGUI有哪些功能元素和函数缩写形式
  • 建材龙头东鹏控股:以CRM打造数字化增长新引擎
  • 万象EXCEL制作(四)格式解读theme1.xml ——东方仙盟练气期
  • 2025 年热转印花膜厂家最新推荐排行榜:覆盖硅胶,五金,塑胶,ABS,水杯等领域,权威推荐优质品牌解决采购难题
  • 核相的基本知识
  • 2025 年废气处理制造商最新推荐排行榜:权威盘点综合实力与服务能力,甄选行业优质品牌
  • 详细介绍:FreeRTOS---任务级和中断级临界区管理使用的理解与源码分析
  • 2025 年国内电容品牌最新推荐排行榜:固态电容,高压电容,安规电容,CBB电容,超级电容等多品类优质厂商权威盘点,助力企业精准选型
  • 【光照】[PBR][法线分布]GGX实现方法对比
  • PS中如何让文字中两行文字实现左对齐且中间部分文字对齐
  • 前端获取接口材料流程
  • APEX实战第5篇:利用APEX程序直观体验向量近似检索能力