定义

管程(Monitor)是一种高级的进程同步机制,将共享资源及其操作封装在一个模块中,统一管理对共享资源的所有访问。

组成

  • 管程名称
  • 局部于管程内部的共享数据结构
  • 对该数据结构进行操作的一组过程(函数)
  • 共享数据设置初始值的语句

特点

  • 任一时刻最多只有一个进程在管程内执行
  • 管程自动实现互斥,无需程序员手动处理
  • 提供条件变量(Condition Variable)实现同步
    • x.wait():阻塞进程,将其插入 x 的阻塞队列
    • x.signal():唤醒在 x 上阻塞的一个进程

与信号量对比

特性信号量管程
互斥实现手动 P/V自动
易用性容易出错更安全
灵活性受限于管程结构