OS学习笔记——生产者消费者问题
来源:互联网 发布:大学数据库课程设计 编辑:程序博客网 时间:2024/04/26 08:29
缓冲池是临界资源,因此需要为其设置一个互斥信号量mutex。此外,为了让生产者和消费者都能正确使用空、满缓冲区,还需要设置两个资源信号量empty和full,empty和full的初值分别为n和0. 在进程选择缓冲区时,还需要使用两个特殊指针in和out,分别指向生产者使用的空缓冲区和消费者使用的满缓冲区。每当in或out当前指向的缓冲区被生产者或消费者使用之后,需要后移一个缓冲区。
semaphore mutex = 1;semaphore full = 0;semaphore empty = n;buffType buffer[n];Producer(){bufType *next,*in;while(TRUE){produceItem(next);P(empty);//申请一个空缓冲区P(mutex);//为缓冲池加锁,使其他进程无法对其中任一缓冲区进行操作copyBuffer(next,in);//将next缓冲区的数据copy到in所指向的公共空缓冲区in = (in + 1) % n;V(mutex);V(full);//释放已经装满数据的满缓冲区,V操作使得满缓冲区数量增加1,如果找不到满缓冲区//而被阻塞的消费者时,该操作还会唤醒它。}}Producer(){bufType *next,*out;while(TRUE){P(full);P(mutex);//为缓冲池加锁,使其他进程无法对其中任一缓冲区进行操作copyBuffer(out,next);//将next缓冲区的数据copy到in所指向的公共空缓冲区out = (out + 1) % n;V(mutex);V(empty);consumeItem(next);}}
阅读全文
0 0
- OS学习笔记——生产者消费者问题
- 生产者/消费者问题学习笔记
- 生产者——消费者问题
- c# 多线程学习笔记(四)生产者消费者问题
- 【操作系统】学习笔记(二)之生产者消费者问题
- 生产者消费者问题——Java方案
- 多线程——生产者/消费者问题
- 复习之生产者——消费者问题
- PV操作——生产者消费者问题
- 使用信号量的生产者—消费者问题
- Java多线程—生产者-消费者问题
- OS生产者消费者
- 生产者—消费者模式
- 生产者—消费者模型
- 生产者—消费者模型
- 生产者—消费者模型
- java自学笔记————多线程 线程间通信之生产者消费者问题;
- 操作系统学习笔记——生产者与消费者,读者和写者
- 手机与SIM卡的组合
- Linux ESP32 开发入门 配置和烧录一个程序
- 第七章 图(最短路径算法:dijkstra,bellman-ford,floyd)
- 基于大数据的房价分析
- 寄存器变量
- OS学习笔记——生产者消费者问题
- web安全学习规划
- 任务管理器上的菜单栏没有了怎么恢复?
- linux快捷键
- 响应式布局设置--@media only screen and
- java高级特性:File I/O
- 利用BS实现安居客房地产中介信息的爬取
- oracle数据迁移常用脚本
- uva 1586