管程
通过前面的知识知道,我们一般会使用信号量机制实现进程同步和互斥。但是信号量机制实现同步互斥需要复杂的编程,很容易出现错误。
管程是一种为了让用户更方便的进行进程同步和互斥而设计出的高级同步机制,类似于面向对象中的类。
使用管程实现同步和互斥的开发成本更低,使程序员更专注于业务,而非花大量时间处理进程的同步互斥的问题。
管程的组成:
1.局部于管程的共享数据结构(类的成员变量);
2.对该数据结构操作的一组过程(类的方法);
3.对该共享数据设置初始值的语句(类的构造函数);
4.管程的名字(类名);
管程的基本特征:
1、局部于管程的数据只能被管程的过程访问(类的成员变量只能被该类的方法访问);
2、每次只允许一个进程在管程中执行某个过程(进程只能互斥访问该管程中的方法);
3、管程中可以设置条件变量实现同步,对条件变量执行wait()阻塞进程时,也会使进程释放管程的使用权,让其他进程可以调用管程的方法不至于造成死锁。
4、进程释放管程使用权有两种方式:执行wait(),执行完管程的成员方法。
使用管程解决生产者-消费者模型
使用管程解决生产者-消费者模型