什么是AND信号量?试利用AND信号量写出生产者—消费者问题的解法。
答:AND信号量是指:将进程在整个运行过程中所需的所有临界资源一次性地全部分配给进程,待该进程使用完后再一起释放。只要尚有一个资源未能分配给该进程,其他所有可能为之分配的资源,也不分配给他,即:对若干临界资源分配,采取原子操作方式,要么全部分配到进程,要么一个也不分配。叫AND信号量。 解法如下: var mutex,empty,full:semaphore:=1,n,0; buffer: array[0,---,n-1]of item; in,out:integer:=0,0; begin parbegin producer: begin repeat produce an item in nextp Swait(empty,mutex); buffer(in):=nextp; in:=(in+1)mod n; Ssignal(mutex,full); until false; end consumer: begin repeat Swait(full,mutex); nextc:=buffer(out); out:=(out+1)mod n; Ssignal(mutex,empty); consume the item in nextc; until false end;【解析】第二章 难易度:中
继续答题:下一题