1.问题:设有无穷多个整数缓冲区(即为无界缓冲池),A进程从输入设备逐个地读入整数并写入缓冲区,B进程则逐个地从缓冲区取出整数进行打印。其中存放整数的变量为item,缓冲区名为buffer,读取过程使用函数getAItem(int * item)来完成,而打印整数使用函数printAItem(int item)来完成。请用记录型信号量机制实现上述两个进程的同步算法,要求:补充完整下列算法程序中带标号处空缺的内容。(注:每个空缺部分的代码可能是多行代码)
structure semaphore full;
int buffer[];// 缓冲区
int in,out;// 缓冲区的入口指针量和出口指针量
____(1)______
void processA()
{
int item;// 存放整数的变量
____(2)______
}
void processB()
{
int item;// 存放整数的变量
____(3)______
}
答:
(1)in = 0;out = 0;full.value = 0;
(2)while(TRUE){
getAItem(&item);
buffer[in++] = item;
signal(full);
}
(3)while(TRUE){
wait(full);
item = buffer[out++];
printAItem(item);
}
标签:full,操作系统,int,整数,综合题,信号量,item,buffer,缓冲区 From: https://www.cnblogs.com/saoge/p/18085604