多选题
2分
在有N个缓冲区的生产者消费者的问题中,下列叙述中哪些是错误的?producer(){ int item; while(TRUE) { item = produc...
在有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(m
{ 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(m
参考答案: CD
参考解析: CD【解析】empty信号量表明的是空闲资源数目,这里为N,所以其初始值为N;full信号量表明的是满的资源数目,这里为0,即其初始值为0;mutex信号量用于实现互斥访问,初始值为1。P(full)和P(mutex)两条语句若颠倒顺序,可能导致死锁。故选择C、D选项。