通过海量题库、编程比赛和实时排名,系统化提升您的编程能力。
"考研真题" 试卷中 2017年考研408计算机统考真题在线评测(附答案) 中有题目如下:
第1题
某进程中有3个并发执行的线程thread1、thread2和thread3,其伪代码如下所示。
//复数的结构类型定义 typedef struct { float a; float b; } cnum; cnum x, y, z; //全局变量 //计算两个复数之和 cnum add(cnum p, cnum q) { cnum s; s.a = p.a+q.a; s.b = p.b+q.b; return s; }
thread1 { cnum w; w = add(x, y); … } thread2 { cnum w; w = add(y, z), … }
thread3 { cnum w; w.a = 1; w.b = 1; z = add(z, w); y = add(y, w); … }
请添加必要的信号量和P、V(或wait( )、signal( ))操作,要求确保线程互斥访问临界资源,并且最大程度地并发执行。
答:
先找出线程对在各个变量上的互斥、并发关系。如果是一读一写或两个都是写,那么这就是互斥关系。每一个互斥关系都需要一个信号量进行调节。
semaphore mutex_y1=1;//mutex_y1用于thread1与thread3对变量y的互斥访问。(1分)
semaphore mutex_y2=1;//mutex_y2用于thread2与thread3对变量y的互斥访问。(1分)
semaphore mutex_z=1; //mutex_z用于变量z的互斥访问。(1分)
互斥代码如下:(5分)
thread1
{
cnum w; wait(mutex_y1);
w=add(x,y); signal(mutex_y1);
……
}
thread2
cnum w: wait(mutex_y2): wait(mutex_z);
w=add(y,z); signal(mutex_z); signal(mutex_y2);
thread3
cnum w;
w.a=1;
w.b=1;
wait(mutex_z); z=add(z,w); signal(mutex_z); wait(mutex_y1); wait(mutex_y2);
y=add(y,w); signal(mutex_y1); signal(mutex_y2);
所属试卷:2017年考研408计算机统考真题在线评测(附答案)
有如下程序,运行这个程序的输出结果是。
有如下程序段(全局int i=4,j=1;,主函数内i
以下代码的输出结果是( )。
给定程序中,函数fun功能是:找出100~999之间
以下叙述中正确的是( )。
有如下程序:程序运行后的输出结果是( )。
若有定义语句接着执行以下选项中的语句,则能正确执行的语
下面程序用STL的条件计数算法和自定义的函数对象对一个
Python标准库random中的_________方
表达式{1,2,3} - {3,4,5}的值为____
已知函数定义def demo(x,y,op):retu
语句pass仅起到占位符的作用,并不会做任何操作。
假设有非空列表x,那么x.append(3)、x= x
已知x={'a':'b','c':'d'},那么表达式
Python列表中所有元素必须为同类型的数据。
请读程序段以上程序段的输出结果是__________。
以下程序打开新文献f.txt,并调用字符输出函数将a数
有以下程序 程序运营后的输出结果是
编写1个弹出式菜单的shell程序并实现其简单的菜单功
结束后台进程的命令是______
在MySQL中专门用于删除用户账号的语句是 _____
下列给出的部件中,其 位 数 (宽度)一定与机器字长相
下图描述的协议要素是I.语法 II.语义
判断一个有n个顶点的无向图是一棵树的条件是有n-1条边
某网络拓扑如题 47 图所示,其中 R 为路由器,主机
(枚举因数)从小到大打印正整数 n 的所有正因数,试补
已知i=5,写出语句a=(i>5)?0:1;执行后整型
若有以下程序则程序的输出结果是
(打印月历)输入月份 m(1≤m≤12),按一定格式打
小陈现有2个任务A,B要完成,每个任务分别有若干步骤如
更多选择题
更多填空题
第十章 C++流
第九章 C++模板
第八章 C++运算符重载
C++语言程序设计真题5
C++语言程序设计真题4
C++语言程序设计真题3
C++语言程序设计真题2