通过海量题库、编程比赛和实时排名,系统化提升您的编程能力。
"考研真题" 试卷中 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计算机统考真题在线评测(附答案)
编写代码获得用户输入的一个三角形的 3 条边长,计算三
编写代码,获得用户输入的一个字符串,将其以逗号分隔输出
下列程序逆序打印所输入正整数的各位数字,例如输入134
下列给定程序中,是建立一个带头结点的单向链表,并用随机
请编写一个函数fun,他的功能是:根据以下公式求 π的
有定义语句:以下选项中与此语句等价的是( )。
以下关于指针的叙述正确是( )。
以下选项中非法的C语言字符常量是。
设有定义以下能给数组x下标为6的元素读入数据的正确语句
可以使用内置函数_______查看包含当前作用域内所有
以下关于文件的描述,错误的是。
若运行一下程序时输入:-2<回车>,则程序的输出结果是
编写shell程序,实现自动删除50个用户账号的功能。
进行字符串查找,使用( )命令。
在System V进程通讯方式中,ipc_perm结构
运行级定义在:
_____表是最重要的权限表,存储有用户对所有数据库操
设关系R有m个元组,假如对R关系作投影运算,其运算结果
考虑以下 C 语言代码:执行上述程序段后,si 的值是
若路由器向 MTU=800B 的链路转发一个总长度为
某内存条包含 8 个 8 192×8 192×8 位的
以下程序的输出结果是( )。
功能:不用递归方式,编写函数fun,求任一整数m的n次
在数据压缩编码中的哈夫曼编码方法,在本质上是一种( )
下列结构中属于非线性结构的是
给定程序函数fun的功能是:比较两个字符串,将长的那个
函数fun的功能是:根据所给的年、月、日,计算出该日是
3)判断:若两个字符串的长度均为 n,则最坏情况下,此
仿生学的问世开辟了独特的科学技术发展道路。人们研究生物
( 全排列 ) 下面程序的功能是利用递归方法生成从 1
更多选择题
更多填空题
第十章 C++流
第九章 C++模板
第八章 C++运算符重载
C++语言程序设计真题5
C++语言程序设计真题4
C++语言程序设计真题3
C++语言程序设计真题2