通过海量题库、编程比赛和实时排名,系统化提升您的编程能力。
"考研真题" 试卷中 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计算机统考真题在线评测(附答案)
下面关于函数模板的表述中不正确的是
有如下程序,运行时的输出结果是。
下列程序的运行结果是( )。
输入 4 个数字,各数字采用空格分隔,对应为变量 x0
下列程序使用指针编程逆序打印输入的10个整数。请仔细阅
己知x是一个列表对象,那么执行语句了y=x[:]之后表
表达式{1,2,3} | {2,3,4}的值为____
函数fun的功能是:将s所指字符串中ASCI值为偶数的
字符串"ab\n\\012\\\""的长度是_____
若有定义语句:则表达式:a+(int)(b/3*(in
以能正确计算1*2*3*.....*10的程序段是(
局域网LAN所采用的传输方式为( )
设有定义:int k=0;,下列选项的4个表达式中与其
请设计一个算法,将给定的表达式树(二叉树)转换为等价的
完全删除/tmp下的所有文件用什么命令及参数?
如何在Debian系统中安装rpm包?
包含在某些候选码中的属性,称为 。
Armstrong公理系统的三条推理规则是自反律、增广
向数据表中插入一条记录用以下哪一项
数据管理技术发展过程中,( )不是人工管理阶段的特点
下列哪些列类型是数值型的数据( )。
(9 分)某网络拓扑如题 47 图所示,以太网交换机
假设 int 为 32 位有符号整数类型,输入的 n
执行下列语句后,*(p+1)的值是_____。
结构化程序所要求的基本结构不包括
不能正确表示数学式的表达式是
小明想通过走楼梯来锻炼身体,假设从第 1 层走到第 2
100以内的最大素数是( )。
输入 :15输出 :________
输出: _____________________
更多选择题
更多填空题
第十章 C++流
第九章 C++模板
第八章 C++运算符重载
C++语言程序设计真题5
C++语言程序设计真题4
C++语言程序设计真题3
C++语言程序设计真题2