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