前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >19-管程

19-管程

作者头像
Ywrby
发布2022-10-27 13:02:57
2580
发布2022-10-27 13:02:57
举报
文章被收录于专栏:Ywrby

管程

信号量机制存在的问题

编写程序困难,容易出错。因此人们考虑使用另外设计的机制,保证程序员在编写程序过程中不需要关注复杂的PV操作。

管程的定义和组成

管程是一种特殊的软件模块,其组成部分为:

  1. 局部与管程的共享数据结构(类似于局部变量的概念,该数据结构只能被管程所访问)
  2. 对该数据结构进行操作的一组过程(类似于局部方法)
  3. 对局部于管程的共享数据设置初始值的语句(初始化方法)
  4. 管程的名字

管程的基本特征

  1. 局部与管程的数据只能被局部与管程的过程(方法)所访问
  2. 一个进程只有通过调用管程内的方法,才能进入管程并访问共享数据
  3. 每次仅允许一个进程在管程内执行某个内部过程(方法)

管程示例

这个过程中由编译器负责实现各个进程互斥的进入管程中的方法

注意

  • 引入管程的目的无非是为了更方便的实现进程的互斥与同步
  • 需要在管程中定义共享数据(例如生产者消费者问题中的缓冲区)
  • 需要在管程中定义用于访问共享数据的“入口”,即函数
  • 只有通过管程中定义的方法才能进入管程,才能访问共享数据
  • 管程存在很多方法,但每次只能开放其中一个方法作为“入口”,并且只允许一个进程或线程进入(这种互斥的特性是由编译器实现的,程序员不需要关心)
  • 可在管程中设置条件变量以及等待/唤醒操作来解决进程同步问题
  • 管程体现了一种封装思想,将复杂的PV操作进行封装方便程序设计人员使用
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-11-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 管程
    • 信号量机制存在的问题
      • 管程的定义和组成
        • 管程的基本特征
          • 管程示例
            • 注意
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档