进程同步-管程

管程是为了解决信号量同步问题的高级语言构造,确保同一时刻只有一个进程在管程内活动。它包含共享数据结构、操作过程和初始化语句。通过条件变量控制进程执行顺序,如在哲学家进餐问题中的应用。管程能有效避免时序错误,提供更清晰的模块化同步方案。
摘要由CSDN通过智能技术生成

基本概念

管程(monitor)是一种基本的,高级的同步构造,是为了解决信号量因不正确的使用而导致的一些时序错误而提出的一种高级语言构造。
管程也是进程同步的一种方式,相比于其他进程同步方式,管程将共享变量和对它们的操作集中在一个模块中,操作系统或并发程序就由这样的模块构成。这样模块之间联系清晰,便于维护和修改,易于保证正确性。
管程只是保证了同一时刻只有一个进程在管程内活动,即管程内定义的操作在同一时刻只被一个进程调用(由编译器实现).但是这样并不能保证进程以设计的顺序执行,因此需要设置condition变量,让进入管程而无法继续执行的进程阻塞自己.
管程由以下几个部分组成:

  1. 局部于管程内部的共享数据结构说明
  2. 对该数据结构进行操作的过程
  3. 对局部于管程内部的共享数据结构设置初始值的语句

管程

使用方法

管程确保一次只有一个进程能在管程内活动,但仍需使用条件变量保证进程以设计的顺序执行,下面以哲学家进餐问题来说明
哲学家进餐问题大概的意思就是有5个哲学家围成一桌,他们每天除了思考问题就是吃饭,由于他们身边只有5只筷子,因此

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值