应用题 8.测量控制系统中的数据采集任务把所采集的数据送一个单缓冲区,计算任务从该单缓冲区中取出数据进行计算。试写出利用信号量机制实现两者共享单缓冲区的同步算法。
【正确答案】此题主要考查进程间共享缓冲区来实现同步的相关内容。
int mlJtex=l
int elTIpty=n;
int full=0;
int in:=0;
int out=0;
main(){
cobegin
send();
obtain();
coend
}
send(){
while(1){
……
collect data in nextp
wait(empty);
wait(mutex);
buffer(in)=nextp;
in=(in+1)mod n;
signal(mutex);
signal(full);
}
}//send
obtain(){
while(1){
wait(full);
wait(mutex);
nextc:=buffer(out);
out:=(out+1)mod n;
signal(mutex);
signal(empty);
culculate the data in nextc;
}//while
}//obtain
【答案解析】