![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
操作系统
飘满红楼
勿在浮沙筑高台,不为繁华易匠心
展开
-
生产者消费者问题(管程实现)
// 管程实现生产者与消费者#define N 50// 定义管程class Monitor{ // 定义含N个数据的环形缓冲区 int buffer[N]; // in表示环形队列队尾指针,out表示环形队列队头指针 int in, out; // notfull表示队列未满的信号量,notempty表示队列非空的信号量 semaphore notfull; semaphore notempty; // 缓冲区中数据个数 int count; // 生产者放入数据.原创 2020-06-10 20:59:53 · 608 阅读 · 0 评论 -
理发师问题
理发师问题是一个比较经典的同步问题类似一个生产者多个消费者总共有沙发(沙发数),理发椅(只有一个,互斥其他顾客)和付费(用于顾客与理发师同步)三种临界区操作代码如下// 沙发个数#define N 5// 顾客等待时所坐的沙发数int count = 0;// 互斥访问countsemaphore mutex = 1;// 理发椅是否为空semaphore empty = 1;// 表示理发椅上是否有顾客semaphore full = 0;// 等待顾客付费sem原创 2020-06-10 20:35:54 · 2678 阅读 · 0 评论 -
读者写者问题三种情况详细解释(通俗易懂)
说明P=wait 申请临界区资源V=signal 释放释放临界区资源读者优先问题:// 读者优先问题// 即只要一个读者在读,后续的其他读者无论是否在写者后面都可以读// 写者必须等待,必须等所有读者都读完才能写入// 互斥读者与读者semaphore rmutex = 1;// 互斥读者与写者,写者与写者semaphore mutex = 1;// 表示读者数量,需看成临界资源,即进来一个读者就+1操作int readcount = 0;// 读者进程void .原创 2020-06-09 22:55:54 · 7068 阅读 · 3 评论