在生产者消费者问题中,消费者调用wait(mutex)(mutex是互斥信号量)阻塞的条件是()。A.有生产者进入在往缓冲区存放产品B.有消费者进入在从缓冲区读产品C.缓冲区空D.缓冲区满

题目

在生产者消费者问题中,消费者调用wait(mutex)(mutex是互斥信号量)阻塞的条件是()。

A.有生产者进入在往缓冲区存放产品

B.有消费者进入在从缓冲区读产品

C.缓冲区空

D.缓冲区满


相似考题
更多“在生产者消费者问题中,消费者调用wait(mutex)(mutex是互斥信号量)阻塞的条件是()。”相关问题
  • 第1题:

    阅读以下说明和Java代码,将应填入(n)处的字句写在对应栏内。

    【说明】

    下面的Java程序演示了程序竞争资源(Mutex的实例对象)而引起程序死锁的一种例子。

    【Java程序】

    import java.applet.*;

    import java.awt.*;

    //此处声明一个互斥类

    class Mutex { }

    class A extends (1)

    {

    private Mutex first,second;

    public A(Mutex f,Mutex s)

    {

    first = f;

    second = s;

    }

    public void run()

    {

    //锁定first变量

    (2) (first)

    {

    try

    { //本线程挂起,等待重新调度

    Thread.sleep(1); //注意此处(1)不是小题序号

    }

    catch(InterruptedException e){}

    System. out. println("threadA got first mutex");

    (2) (second) //锁定second变量

    { //do something

    System. out. println("threadA got second mutex");

    } //释放second变量

    } //释放first变量

    }

    }

    class B extends (1)

    {

    private Mutex first,second;

    public B(Mutex f,Mutex s)

    {

    (3) ;

    second = s;

    }

    public void run()

    {

    (2) (second) //锁定second变量

    {

    //do something

    try

    {

    Thread.sleep(((int)(3*Math.random()))*1000);

    //本线程挂起,等待重新调度

    }

    catch(InterruptedException e){}

    System.out.println("threadB got second mutex");

    (2) (first) //锁定first变量

    {

    //do something

    System.out.println("threadB got first mutex");

    } //释放first变量

    } //释放second变量

    }

    }

    public class DeadlockExample

    {

    public static void main(String arg[])

    {

    Mutex mutexX = new Mutex();

    Mutex mutexY = new Mutex();

    AthreadA = new A(mutexX,mutexY);

    B threadB = new B (4);

    threadA.(5);

    threadB.start();

    }

    }


    正确答案:(1)Thread
    (1)Thread 解析:从下面的程序不难看出,类A、B均是线程类,因此需要继承自类Thread。

  • 第2题:

    在Pthread线程包关于条件变量的使用中,pthread_mutex_init()表示的是

    A.创建一个互斥量

    B.等待一个互斥量

    C.等待一个互斥量

    D.释放一个互斥量


    正确答案:A

  • 第3题:

    对于两个并发进程,设互斥信号量为mutex,若mutex=0,则表示没有进程进入临界区。( )

    此题为判断题(对,错)。


    参考答案:错误

  • 第4题:

    对于有界缓冲区数量为n的生产者-消费者问题来说,应设置互斥信号量mutex、资源信号量full和empty,它们的初值分别应为()。

    A.0、1、n

    B.1、n、0

    C.n、1、0

    D.1、0、n


    参考答案:D

  • 第5题:

    用P、V操作管理临界区时,把信号量mutex的初值设定为1。当有k(k>1)个进程在mutex的等待队列中时,信号量的值为

    A.k

    B.k 1

    C.1 k

    D.k


    正确答案:D

  • 第6题:

    在Pthread线程包关于条件变量的使用中,pthread_mutex_init( )表示的是()。

    • A、创建一个互斥量
    • B、等待一个互斥量
    • C、获得一个互斥量
    • D、释放一个互斥量

    正确答案:A

  • 第7题:

    设两个进程共用一个临界段的互斥信号量mutex,当mutex=-1时表示:()。

    • A、一个进程入了临界段,另一个进程等待
    • B、没有一个进程进入了临界段
    • C、只有一个进程进入了临界段
    • D、两个进程都在等待

    正确答案:A

  • 第8题:

    多个并发进程使用一个互斥信号量mutex时,如果mutex=0,则表示()

    • A、没有进程在临界区中
    • B、有一个进程在临界区中
    • C、有多个进程在临界区中
    • D、有一个进程在临界区中,另一些进程正在等待进入临界区

    正确答案:D

  • 第9题:

    有9个生产者,6个消费者,共享容量为8的缓冲区。在这个生产者-消费者问题中,互斥使用缓冲区的信号量mutex的初值应该为()。

    • A、1
    • B、6
    • C、8
    • D、9

    正确答案:A

  • 第10题:

    单选题
    有9个生产者,6个消费者,共享容量为8的缓冲区。在这个生产者-消费者问题中,互斥使用缓冲区的信号量mutex的初值应该为()。
    A

    1

    B

    6

    C

    8

    D

    9


    正确答案: B
    解析: 暂无解析

  • 第11题:

    单选题
    多个并发进程使用一个互斥信号量mutex时,如果mutex=0,则表示()
    A

    没有进程在临界区中

    B

    有一个进程在临界区中

    C

    有多个进程在临界区中

    D

    有一个进程在临界区中,另一些进程正在等待进入临界区


    正确答案: C
    解析: 暂无解析

  • 第12题:

    单选题
    ()用来初始化一个互斥锁。
    A

    pthread_mutex_init

    B

    pthread_mutex_create

    C

    pthread_mutex_begin

    D

    pthread_mutex_lock


    正确答案: B
    解析: 暂无解析

  • 第13题:

    用P、V操作管理临界区时,把信号量mutex的初值设定为1。当mutex的等待队列中有k(k>1)个进程时,信号量的值为( )。

    A)k

    B)k-1

    C)1-k

    D)-k


    正确答案:C
    设信号量为S,常用信号量的取值可以解释为:S值的大小表示某类资源的数量。当S>0时,表示还有资源可以分配;当S<0时,其绝对值表示S信号量等待队列中进程的数目。每执行一次P操作,意味着要求分配一个资源;每执行一次v操作,意味着释放一个资源。依题意。信号量mutex的初始值为1,表示有一个资源可以分配,当mutex的等待队列中有K个进程时,信号量的值为1-K。

  • 第14题:

    读者写者问题的解决方案如下所示。

    Begin

    ————①————;

    read_count:=read_count+1;

    if read_count=1

    then P(wnte);

    ————②————;

    读文件;

    ————③————;

    read—count:=read—count—1;

    if read—count=O

    then V(write);

    ————④————;

    End

    假设信号量.mutex表示对read—count共享变量所关注的互斥区进行互斥,那么,①、②、③和④处应该填写的语句是

    A.P(mutex)、P(mutex)、V(mutex)、V(mutex)

    B.P(mutex)、V(mutex)、P(mutex)、V(mutex)

    C.V(mutex)、V(mutex)、P(mutex)、P(mutex)

    D.V(mutex)、P(mutex)、V(rnutex)、P(mutex)


    正确答案:B
    解析:①③处需要申请进入互斥区对read_count变量进行操作;②④处退出对read—count变量进行操作的互斥区。所以正确答案为

  • 第15题:

    有9个生产者,6个消费者,共享容量为8的缓冲区。在这个生产者-消费者问题中,互斥使用缓冲区的信号量mutex的初值应该为( )。

    A.1

    B.6

    C.8

    D.9


    参考答案:A

  • 第16题:

    请教:2016计算机四级网络工程师高分突破试题多选题64如何解答?

    关于读者写者问题,下列叙述中哪些是错误的?

    Reader()

    {

    while (TRUE) {

    P(mutex);

    rc = rc + 1;

    if (rc = = 1) P (w);

    V(mutex); ①

    读操作;

    P(mutex); ②

    rc = rc - 1;

    if (rc = = 0) V(w);

    V(mutex);

    其他操作;

    }

    }

    writer()

    {

    while (TRUE) {

    ……

    P(w);

    写操作;

    V(w);

    }

    }

    A.信号量w的初值是0

    B.信号量mutex的初值是1

    C.计数器rc的初值是0

    D.语句P(mutex)的位置可以放到语句rc = rc + 1后面

    E.语句①②可以取消


    A,D,E

  • 第17题:

    在有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(mutex); consume_item(item); } }

    A.信号量empty的初值为N

    B.信号量full的初值为0

    C.信号量mutex的初值为0

    D.P(full)和P(mutex)两条语句可以颠倒顺序

    E.V(mutex)和V(mutex)两条语句可以颠倒顺序


    正确答案:CD

  • 第18题:

    ()用来初始化一个互斥锁。

    • A、pthread_mutex_init
    • B、pthread_mutex_create
    • C、pthread_mutex_begin
    • D、pthread_mutex_lock

    正确答案:A

  • 第19题:

    在生产者—消费者问题中,能否将生产者进程的wait(empty)和wait(mutex)语句互换,为什么?


    正确答案: 不能。
    因为这样可能导致系统死锁。当系统中没有空缓冲时,生产者进程的wait(mutex)操作获取了缓冲队列的控制权,而wait(empty)导致生产者进程阻塞,这时消费者进程也无法执行。

  • 第20题:

    对于有界缓冲区数量为n的生产者-消费者问题来说,应设置互斥信号量mutex、资源信号量full和empty,它们的初值分别应为()。

    • A、0、1、n
    • B、1、n、0
    • C、n、1、0
    • D、1、0、n

    正确答案:D

  • 第21题:

    单选题
    对于有界缓冲区数量为n的生产者-消费者问题来说,应设置互斥信号量mutex、资源信号量full和empty,它们的初值分别应为()。
    A

    0、1、n

    B

    1、n、0

    C

    n、1、0

    D

    1、0、n


    正确答案: B
    解析: 暂无解析

  • 第22题:

    问答题
    在生产者—消费者问题中,能否将生产者进程的wait(empty)和wait(mutex)语句互换,为什么?

    正确答案: 不能。
    因为这样可能导致系统死锁。当系统中没有空缓冲时,生产者进程的wait(mutex)操作获取了缓冲队列的控制权,而wait(empty)导致生产者进程阻塞,这时消费者进程也无法执行。
    解析: 暂无解析

  • 第23题:

    单选题
    设两个进程共用一个临界段的互斥信号量mutex,当mutex=-1时表示:()。
    A

    一个进程入了临界段,另一个进程等待

    B

    没有一个进程进入了临界段

    C

    只有一个进程进入了临界段

    D

    两个进程都在等待


    正确答案: B
    解析: 暂无解析

  • 第24题:

    单选题
    对于两个并发进程,设互斥信号量为mutex,若mutex=0,则(  )。
    A

    表示没有进程进入临界区

    B

    表示有一个进程进入临界区

    C

    表示有一个进程进入临界区,另一个进程等待进入

    D

    表示有两个进程进入临界区


    正确答案: A
    解析: