操作系统中的信号量机制问题某车站售票厅,任何时刻最多可容纳20名购票者进入,当售票厅中少于20名购票者时,厅外的购票者可立即进入,否则需要在外面等待.每个购票者可看成一个进程.要求

来源:学生作业学帮网 编辑:学帮网 时间:2024/04/27 16:04:35

操作系统中的信号量机制问题
某车站售票厅,任何时刻最多可容纳20名购票者进入,当售票厅中少于20名购票者时,厅外的购票者可立即进入,否则需要在外面等待.每个购票者可看成一个进程.
要求:再写C语言代码 要完整的

一、问题描述
生产者-消费者问题是一个经典的进程同步问题,该问题最早由Dijkstra提出,用以演示他提出的信号量机制.
他要求设计在同一个进程地址空间内执行的两个线程.
生产者线程生产物品,然后将物品放置在一个空缓冲区中供消费者线程消费.
消费者线程从缓冲区中获得物品,然后释放缓冲区.
当生产者线程生产物品时,如果没有空缓冲区可用,那么生产者线程必须等待消费者线程释放出一个空缓冲区.
当消费者线程消费物品时,如果没有满的缓冲区,那么消费者线程将被阻塞,直到新的物品被生产出来.
同理 本问题也是要求设计在同一个进程地址空间内执行的两个线程.
当车站售票厅达到20人上线时,必须等有人走出车站售票厅,车站售票厅外的购票者才可进入.就如上面
生产者线程生产物品时,如果没有空缓冲区可用,那么生产者线程必须等待消费者线程释放出一个空缓冲区.此时厅外购票者进入大厅这个事件可以看做是一个生产者线程,而厅内购票者走出厅外这个事件就可以看做是一个消费者线程.如此问题迎刃而解.
二、实现代码
#include
#include
const unsigned short SIZE_OF_BUFFER = 10; //缓冲区长度
unsigned short ProductID = 0; //产品号
unsigned short ConsumeID = 0; //将被消耗的产品号
unsigned short in = 0; //产品进缓冲区时的缓冲区下标
unsigned short out = 0; //产品出缓冲区时的缓冲区下标
int g_buffer[SIZE_OF_BUFFER]; //缓冲区是个循环队列
bool g_continue = true; //控制程序结束
HANDLE g_hMutex; //用于线程间的互斥
HANDLE g_hFullSemaphore; //当缓冲区满时迫使生产者等待
HANDLE g_hEmptySemaphore; //当缓冲区空时迫使消费者等待
DWORD WINAPI Producer(LPVOID); //生产者线程
DWORD WINAPI Consumer(LPVOID); //消费者线程
int main()
{
//创建各个互斥信号
g_hMutex = CreateMutex(NULL,FALSE,NULL);
g_hEmptySemaphore = CreateSemaphore(NULL,0,SIZE_OF_BUFFER-1,NULL);
//调整下面的数值,可以发现,当生产者个数多于消费者个数时,
//生产速度快,生产者经常等待消费者;反之,消费者经常等待
const unsigned short PRODUCERS_COUNT = 3; //生产者的个数
const unsigned short CONSUMERS_COUNT = 1; //消费者的个数
//总的线程数
const unsigned short THREADS_COUNT = PRODUCERS_COUNT+CONSUMERS_COUNT;
DWORD producerID[CONSUMERS_COUNT]; //生产者线程的标识符
DWORD consumerID[THREADS_COUNT]; //消费者线程的标识符
//创建生产者线程
for (int i=0;i

操作系统中的信号量机制问题某车站售票厅,任何时刻最多可容纳20名购票者进入,当售票厅中少于20名购票者时,厅外的购票者可立即进入,否则需要在外面等待.每个购票者可看成一个进程.要求 操作系统中信号量哲学家进食 操作系统信号量问题:若信号量S的初值为m,当前值为-n,则表示有多少个等待进程?希望回答, (计算机操作系统)wait操作和signal操作什么意思?在计算机操作系统中,信号量机制的那两个操作是什么意思?用自己的理解回答,呵呵,我看书有点看不懂! 1.春节期间,某客运站旅客流量不断增大,旅客往往需要长时间排队等候购票.经调查发现,每 天开始售票 时,约有400人排队购票,同时又有新的旅客不断进入售票厅排队等候购票.售票时售票厅 你先来阅读答案.明天下午1点30分以前啊啊啊.(二)你 先 来火车站售票厅内,人头攒动,每一个售票口前都排着长长的队伍.下午三点十分左右,一个中年妇女急匆匆地走进售票厅,望着一个长 关于操作系统 哲学家吃饭的问题 ,不需要编程,用信号量解决哲学家吃饭的原理和方法.还有用test and set 来解决哲学家吃饭的原理和方法. 操作系统中,如果信号量的当前值为负数,则表示系统中在该信号量上有多少个等待进程,为什麽 体温调节机制中的问题体温调节机制中,高温时,有没有减少产热? 一道关于操作系统的题目,是临界区问题还是信号量问题?请写出代码?There is only one single-log bridge(独木桥) over the river connecting the west and the east.If there is some one on the bridge,people from other direction mu 三级计算机操作系统问题题目1:J3的计算时间改为0.25秒.作业执行次序是?题目2:若有有3个进程共享一个互斥段,每次最多允许两个进程进入互斥段,则信号量的变化范围是?回答详细加分啊 求教一下操作系统中的PV原语首先请问P,V到底是什么意思,书上的写法我看不明白.我看到有这样的写法P(S1),V(S2),S1和S2是两个信号量,P(S1)是什么意思?V(S2),又是什么意思? 哲学家就餐问题?操作系统设计.会吗. 火车站售票厅内,人头涌动,每一个售票窗口都排着长长的队伍.下午三点十分左右,一个中年妇女急匆匆走进售票厅,望着一条条长长的队伍轻轻地“呀”了声.她环顾四周,站在队伍的后面.她的 读着你先来这句简单而又温暖的话,你有什么感受?火车站售票厅内,人头涌动,每一个售票窗口都排着长长的队伍.下午三点十分左右,一个中年妇女急匆匆走进售票厅,望着一条条长长的队伍轻轻 阅读题,给6——8自然段空白处加标点 给短文拟一个合适的题目火车站售票厅内,人头攒动,每一个售票窗口前都排着长长的队伍.下午三点十分左右,一个中年妇女急匆匆地走进售票厅,望着一个 你先来 阅读答案 今天就要火车站售票厅内,人头攒动,每一个售票窗口前都排着长长的队伍.下午三点十分左右,一个中年妇女急匆匆地走进售票厅,望着一个个长长的队伍轻轻“呀’’了一声. 根据语境,巧妙填对话~某大型机场售票厅,许多旅客正排队购买机票,秩序井然.突然一个衣着笔挺的中年人,挤到最前面,粗暴地指责售票员工作效率太低,耽误了他的宝贵时间,他唾沫四溅地大