Procedure producer; begin while true do begin produce_item; ProducerConsumer.enter end end; Procedure consumer; begin while true do begin ProducerConsumer.remove; consume_item; end end; 管程与信号量的比较 由于管程的机制,在某个时刻,只能有一个管程过程是活跃的,就类似于原语操作一样,也能够很好地解决Spooler目录的问题,而且更为简洁,在使用的过程中,能够直接分析代码,更容易理解使用。而且它的互斥操作是由编译器所支持的,更为安全,不宜出错。 用信号量可实现进程间的同步,但由于信号量的控制分布在整个程序中,其正确性分析很困难。管程是管理进程间同步的机制,它保证进程互斥地访问共享变量,并方便地阻塞和唤醒进程。管程可以函数库的形式实现。相比之下,管程比信号量好控制。 弊端,支持管程的编程语言太少,因为它要求编译器的支持,而信号量对于一个操作系统来说是很容易添加的;他们都是用来解决访问同
原创力文档

文档评论(0)