通过海量题库、编程比赛和实时排名,系统化提升您的编程能力。
"考研真题" 试卷中 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计算机统考真题在线评测(附答案)
编写程序输入一个可能带空格的字符串,查找字符'z'出现
深度为5的完全二叉树的结点数不可能是( )。
利用函数模板,设计求一个数组元素之和的函数sum和两个
指出下列程序片段中的错误标号,写出正确语句或解释错在何
在Python中0xad是合法的十六进制数字表示形式。
以下关于分支结构的描述中,错误的是。
假设已从标准库functools导入reduce函
Python关键字elif表示_______和____
若float a,b,c;要通过语句:scanf("%
假定计算机M1和M2具有相同的指令集体系结构(ISA)
将当前目录下的文件man.config 压缩为man.
下面哪个系统目录中存放了系统引导、启动时使用的一些文件
在Linux系统中,用来存放系统所需要的配置文件和子目
下面哪个命令可以查看网卡的中断?
作为一个管理员,你希望在每一个新用户的目录下放一个文件
创建外键约束时,如果要使在删除父表记录时子表对应记录也
设关系模式R(A,B,C)和S(B,C,E),R和S执
参照完整性要求外码的值必须取 ,或等于被参照关系
算法效率的评价用时间复杂度和空间复杂度两个方面进行。
在完全二叉树中,若一个结点是叶结点,则它没
SMTP工作于
2023年CSP-S1阅读程序题2:假设输入的n是不超
有实现xxy的两个C语言函数如下:unsigned u
软件测试的方法有 和 (即黑盒法)。
当a=1,b=2,c=3时,执行以下程序段后a=___
算法时间复杂度的度量方法是
数据字典(DD)所定义的对象都包含于( )。
输出:( )
每份考卷都有一个 8位二进制序列号。当且仅当一个序列号
在下列各项中,只有( )不是计算机存储容量的常用单位。
更多选择题
更多填空题
计算机二级Python语言程序设计模拟试卷
Python第三方库
2025年考研408计算机统考真题在线评测(附答案)
Python标准库
Python函数
Python文件
Python组合数据类型