若x是管程内的条件变量,则当进程执行x.wait()时所做的工作是()。
A、实现对变量x的互斥访问
B、唤醒一个在x上阻塞的进程
C、根据x的值判断该进程是否进入阻塞态
D、阻塞该进程,并将之插入x的阻塞队列中
管程 (Monitor) 是一种同...
用户登录可进行刷题及查看答案
管程 (Monitor) 是一种同步机制,用于解决多个进程或线程对共享资源的并发访问问题。管程通常包含共享数据和对该数据进行操作的方法集合。
条件变量 (Condition Variable) 是管程内的一种机制,用于实现进程或线程之间的等待和唤醒操作。条件变量提供了一种方式,允许进程(线程)在某个条件满足之前进行等待,以避免忙等。当条件满足时,其他进程(线程)可以通过唤醒操作通知等待中的进程(线程)继续执行。
在管程中,条件变量的操作通常包括以下两个方法:
wait():当一个进程(线程)调用条件变量的wait()方法时,它会被放入条件变量的等待队列,并且会被阻塞(暂停执行),直到其他进程(线程)通过信号 (signal) 或广播 (broadcast) 操作唤醒它。
signal() / broadcast():当某个进程(线程)通过条件判断发现条件变量的某个条件满足时,它可以通过signal()方法向条件变量发送一个信号,唤醒等待在该条件变量上的一个进程(线程);或者通过broadcast()方法唤醒等待在该条件变量上的所有进程(线程)。
当进程执行 x.wait() 时,所做的工作是阻塞该进程,并将其插入 x 的阻塞队列中。进程会主动阻塞自己,并排队等待被唤醒。
本题选D。
登录后提交答案
暂无评论,来抢沙发