在测量控制系统中的数据采集任务把所采集的数据送一个单缓冲区 计算任务从该单缓冲区中取出数据
在测量控制系统中的数据采集任务把所采集的数据送一个单缓冲区,计算任务从该单缓冲区中取出数据进行计算。试写出利用信号量机制实现两者共享单缓冲区的同步算法。
请帮忙给出正确答案和分析,谢谢!
-
正确答案:int mutex=1; int empty=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
intmutex=1;intempty=n;intfull=0;intin=0;intout=0;main(){cobeginsend();obtain();coend}send(){while(1){collectdatainnextp;wait(empty);wait(mutex);buffer(in)=nextp;in=(in+1)modn;signal(mutex);signal(full);}}//sendobtain(){while(1){wait(full);wait(mutex);nextc:=buffer(out);out:=(out+1)modn;signal(mutex);signal(empty);culculatethedatainnextc;}//while}//obtain
