多选题
4.
在有N个缓冲区的生产者消费者的问题中,下列叙述中哪些是错误的?______
producer()
{ int item;
while(TRUE){
item=produce_item();
P(empty);
P(mutex);
insert_item(item);
V(mutex)
V(full);}}
consumer()
{int item;
while(TRUE){
P(full);
P(mutex);
item=remove_item();
V(mutex);
V(empty);
consume_item(item);}}
A、
信号量mutex的初值为0
B、
信号量full的初值为0
C、
信号量empty的初值为N
D、
P(full)和P(mutex)两条语句的顺序可以颠倒
E、
V(mutex)和V(empty)两条语句的顺序可以颠倒
【正确答案】
A、D
【答案解析】
empty信号量表明的是空闲资源数目,即为N,所以其初始值为N;full信号量表明的是满的资源数目,本题中为0,所以其初始值为0;mutex信号量用于实现互斥访问,初始值为1。P(full)和P(mutex)两条语句如果颠倒顺序,可能导致死锁。因此,本题答案选择A、D选项。
提交答案
关闭