个人技术分享

\quad

一. 生产者-消费者问题

\quad

问题分析

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
\quad

如何实现

在这里插入图片描述
\quad

在这里插入图片描述
\quad

在这里插入图片描述

在这里插入图片描述
V操作不会导致进程阻塞,因此两个v操作顺序可以交换。

在这里插入图片描述

\quad

二. 多生产者-多消费者问题

\quad

在这里插入图片描述
盘子中只能放一个水果
女儿只吃苹果, 儿子只吃橘子
\quad

在这里插入图片描述
\quad

在这里插入图片描述
\quad

在这里插入图片描述
\quad

在这里插入图片描述
\quad

在这里插入图片描述

在这里插入图片描述
\quad
原因在于: 本题中的缓冲区大小为1,在任何时刻,apple、 orange、 plate三个同步信号量中最多只有一个是1。因此在任何时刻,最多只有一个进程的P操作不会被阻塞,并
顺利地进入临界区…

在这里插入图片描述
\quad

在这里插入图片描述

在这里插入图片描述

\quad

三. 吸烟者问题

\quad

在这里插入图片描述
\quad

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

\quad

四. 读者-写者问题

\quad

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
\quad
在这里插入图片描述
\quad
在这里插入图片描述
在这里插入图片描述

潜在的问题: 这种算法中,读进程是优先的, 只要有读进程还在读,写进程就要一直阻塞等待,可能“饿死”

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

\quad

五. 哲学家进餐问题

\quad

在这里插入图片描述
\quad

在这里插入图片描述
\quad
\quad
在这里插入图片描述
\quad
\quad

在这里插入图片描述
\quad
\quad
在这里插入图片描述
\quad
\quad
在这里插入图片描述
在这里插入图片描述
不会发生死锁

在这里插入图片描述