在有N个缓冲区的生产者消费者的问题中,下列叙述中哪些是错误的?( ) producer() {int item: while(TRUE) item=produce_item(); P(empty); P(mutex

admin2021-03-19  22

问题 在有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、信号量empty的初值为N
B、信号量full的初值为0
C、信号量mutex的初值为0
D、P(full)和P(mutex)两条语句可以颠倒顺序
E、V(mutex)和V(empty)两条语句可以颠倒顺序

答案C,D

解析 empty信号量表明的是空闲资源数目,这里为N,所以其初始值为N;full信号量表明的是满的资源数目,这里为0,即其初始值为0;mutex信号量用于实现互斥访问,初始值为1。P(full)和P(mutex)两条语句若颠倒顺序,可能导致死锁。故本题答案选择CD选项。
转载请注明原文地址:https://kaotiyun.com/show/B6yZ777K
0

最新回复(0)