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

admin2022-06-20  29

问题 在有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选项。
转载请注明原文地址:https://jikaoti.com/ti/p6l7FFFM
0

相关试题推荐
最新回复(0)