管程机制

管程机制
将共享变量及对共享变量能够进行的所有操作集中在一个模块中。
(把信号量及其操作原语封装在一个对象内部)

管程的组成
在这里插入图片描述
封装什么?
1.一组局部变量
2.对局部变量操作的一组过程
3.对局部变量进行初始化的语句

生产者-消费者问题中对缓冲区定义一个管程
在这里插入图片描述

管程实现同步
1.对共享变量互斥操作
管程的特点直接实现了该要求,进程一次一个进入管程调用内部过程操作共享变量。
管程的互斥访问完全由编译程序在编译时自动添上,无需程序员关心
2.操作的同步控制
靠条件变量的操作管理实现。
进入管程但不能获取资源操作的过程将阻塞,并在满足条件时被唤醒执行

在这里插入图片描述

x:代表没有空这种条件
y:代表没有产品这种条件

生产者-消费者问题的管程解决方法
在这里插入图片描述
在这里插入图片描述

条件变量
(主要作用就是进程同步的阻塞和唤醒控制)

局部于管程的变量有两种:
1.普通变量
2.条件变量(用于控制进程阻塞和唤醒)
类似信号量变量,但不取具体值;相当于每个阻塞队列的队列指针
对条件变量的操作需结合对普通变量的条件判断,从而控制进程状态
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值