文章目录
实现互斥大体有五种方法,前面看了软件方法,硬件方法,信号量方法,剩下的还有管程方法 和 消息传递两种方法,接下来先看 管程方法;
Monitor——面向对象方法
- 用信号量实现互斥,编程容易出错(wait、signal的出现顺序和位置非常重要)
- 管程是用并发pascal、pascal plus,Modula-2,modula-3等语言编写的程序,现在已经形成了许多库函数。管程可以锁定任何对象,如链表或链表的元素等;
- 用管程实现互斥比用信号量实现互斥,更简单、方便;
- 管程是软件模块,由若干过程、局部于管程的数据,初始化语句(组)组成;
- 特点:
1、局部变量只能被管程内部使用;
2、进程要使用临界资源的话,需要调用管程内部的一个过程来使用;
3、一次只允许一个进程进入管程去执行;