多生产者-多消费者
问题描述
桌子上有一只盘子,每次只能向其中放入一个水果。
爸爸专向盘子中放苹果,妈妈专向盘子中放橘子,
儿子专等着吃盘子中的橘子,女儿专等着吃盘子中的苹果。
只有盘子空时,爸爸或妈妈才可向盘子中放一个水果。
仅当盘子中有自己需要的水果时,儿子或女儿可以从盘子中取出水果。
用操作实现上述过程。
问题分析
如何实现
分析: 刚开始,儿子、女儿进程即使上处理机运行也会被阻塞。如果刚开始是父亲进程先上处理机运行,则:
父亲P( plate),可以访问盘子→母亲P( plate),阻塞等待盘子→父亲放入苹果 Apple,女儿进程被唤醒,其他进程即使运行也都会阻塞,暂时不可能访问临界资源(盘子)–》女儿P(apple),访问盘子,V( plate),等待盘子的母亲进程被唤醒→母亲进程访问盘子(其他进程暂时都无法进入临界区)→…