【哲学家就餐问题-(C)】接续第55题 (C) 引入初值为1的信号量mutex,①处填上“wait(mutex); wait(chopstick[i]); wait(chopstick[(i+1)mod 5]); signal(mutex);”,②处填上“signal(chopstick[(i+1)mod 5]); signal(chopstick[i]);”
【哲学家就餐问题-(C)】接续第55题 (C) 引入初值为1的信号量mutex,①处填上“wait(mutex); wait(chopstick[i]); wait(chopstick[(i+1)mod 5]); signal(mutex);”,②处填上“signal(chopstick[(i+1)mod 5]); signal(chopstick[i]);”
参考答案和解析
侧面图?甲板、平台平面图?舱底平面图
相关考题:
关于读者写者问题,下列叙述中哪些是错误的? 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的初值是0B.信号量mutex的初值是1C.计数器rc的初值是0 rc是互斥资源么D.语句P(mutex)的位置可以放到语句rc = rc + 1后面E.语句①②可以取消
阅读以下说明和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 somethingSystem. 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 somethingtry{Thread.sleep(((int)(3*Math.random()))*1000);//本线程挂起,等待重新调度}catch(InterruptedException e){}System.out.println("threadB got second mutex");(2) (first) //锁定first变量{//do somethingSystem.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();}}
读者写者问题的解决方案如下所示。Begin————①————;read_count:=read_count+1;if read_count=1then P(wnte);————②————;读文件;————③————;read—count:=read—count—1;if read—count=Othen 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)
在下面程序横线处填上适当内容,以使该程序执行结果为4.4。includeusing namespace std; 在下面程序横线处填上适当内容,以使该程序执行结果为4.4。include<iostream>using namespace std;template<typename T>T average(T*datA){T s=0;int i:0;while(data[i])【 】;return s/(i+1);}int main(){double x[]={2.5,4.5,6.5,5,0.0,5,3,18.5};cout<<average(X);return 0;}
对于有界缓冲区数量为n的生产者-消费者问题来说,应设置互斥信号量mutex、资源信号量full和empty,它们的初值分别应为()。 A.0、1、nB.1、n、0C.n、1、0D.1、0、n
请教: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的初值是0B.信号量mutex的初值是1C.计数器rc的初值是0D.语句P(mutex)的位置可以放到语句rc = rc + 1后面E.语句①②可以取消
在有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的初值为NB.信号量full的初值为0C.信号量mutex的初值为0D.P(full)和P(mutex)两条语句可以颠倒顺序E.V(mutex)和V(mutex)两条语句可以颠倒顺序
()用来初始化一个互斥锁。A、pthread_mutex_initB、pthread_mutex_createC、pthread_mutex_beginD、pthread_mutex_lock
单选题()用来初始化一个互斥锁。Apthread_mutex_initBpthread_mutex_createCpthread_mutex_beginDpthread_mutex_lock