首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
考研
假设有一个进程拥有两个线程(编号为0和1)需要去访问同一个共享资源,为了避免竞争状态的问题,必须实现一种互斥机制,使得在任何时候只能有一个线程在访问这个资源。假设有如下的一段代码: int flag[2];/*flag数组,初始化为FALSE*/
假设有一个进程拥有两个线程(编号为0和1)需要去访问同一个共享资源,为了避免竞争状态的问题,必须实现一种互斥机制,使得在任何时候只能有一个线程在访问这个资源。假设有如下的一段代码: int flag[2];/*flag数组,初始化为FALSE*/
admin
2014-04-17
97
问题
假设有一个进程拥有两个线程(编号为0和1)需要去访问同一个共享资源,为了避免竞争状态的问题,必须实现一种互斥机制,使得在任何时候只能有一个线程在访问这个资源。假设有如下的一段代码:
int flag[2];/*flag数组,初始化为FALSE*/
Enter_critical_section(int my_thread_id),int other_thread_id)
while (flag[other_thread-id]=TRuE); /*空循环语句*/
flag[my_thread_id]=TRUE;
}
Exit_Critical_Seetion(int my_thread_id),int other_thread_id)
{
flag[my_thread_id]=FALSE;
}
当一个线程想要访问临界资源时,就调用上述的这两个函数。例如,线程0的代码可能是这样的:
Enter_Critical_Section(0,1);
……使用这个资源……
Exit_Critical_Section(0,1),
……做其他的事情……
试问:
如果把Enter Critical Section()函数中的两条语句互换一下位置,结果会如何?
选项
答案
可能会出现死锁。 考虑如下的情形: 1)初始化的时候,flag数组的两个元素值均为FALSE。 2)线程0先执行,flag[0]=TRUE,假设这个时候来了一个时钟中断,则打断它的运行。 3)线程1去执行,flag[1]=TRUE,在执行while循环语句的时候,由于flag[0]=TRUE,所以在这个地方被卡住了,直到时间片用完。 4)线程0再执行的时候,由于flag[1]=TRUE,它也在while循环语句的地方被卡住了,这样这两个线程都无法执行下去,从而发生死锁。 本题出现死锁的原因是两个线程都可以直接进入Enter Criticall Section()函数,并立即对flag[]进行修改,使flag[0]和flag[1]的值都为TRUE;又因为无法保证Enter CriticaL Section()函数执行的原子性,导致了两个进程在停止while()语句的条件判断上发生死锁。
解析
转载请注明原文地址:https://www.kaotiyun.com/show/fixi777K
本试题收录于:
计算机408题库学硕统考专业分类
0
计算机408
学硕统考专业
相关试题推荐
以下不属于柳宗元哲学思想的是()。
下列关于农耕世界与游牧世界文明特征的叙述中,不正确的是()。
恩格斯认为19世纪初的空想社会主义思想家中,有一个人的社会主义始终保持着其“实践的性质”,这个人是()。
《凡尔赛和约》中,战胜国以何种方式处置德国的全部海外殖民地?()。
清朝入关初期执行了一些错误的政策,在社会上产生了不良的影响,其中不包括()。
格拉古兄弟改革的内容和结果是什么?
1988年起,苏联民族矛盾激化,民族分离运动加剧,第二次较大规模的民族冲突是()。
世界天文史上最早实地测量子午线的记录是由谁进行的?()
洋务派创办军事工业的方式是()。
下列几种排序方法中,要求内存量最大的是()。
随机试题
A、开路粉碎B、闭塞粉碎C、干法粉碎D、循环粉碎E、自由粉碎粉碎的物料通过筛子或分级设备使粗颗粒重新返回到粉碎机为()。
仪表设备不应安装在()的位置。
()原则是指将各项事权项目受益的对象和范围大小作为各级政府履行职责的依据。
Successisoftenmeasuredbytheabilitytoovercomeadversity.But,itisoftenthebeliefofothersthatgivesusthecourage
设某质量特性X~N(μ,σ2),若公差幅度T=80σ,则Cp为()。
李克强总理说,糌粑是藏族人民每天的主食,我是安徽人,从小吃糍粑,虽然原料不同,但做法相似,民族团结要像糌粑和糍粑那样捏成团。总理在此主要强调()。①发展平等、团结、互助、和谐的民族关系②坚持和完善民族区域自治政策③民族团结社会安宁
“建国君民,教学为先”体现了哪两者之间的关系()。
下列关于人格的叙述,正确的是()。
如果定义班级关系如下:班级(班级号,总人数,所属学院,班级学生)则使它不满足第一范式的属性是()。
有如下程序:#include<iostream>usingnamespacestd;classBase{intX;public:Base(intn=0):X(n){cout<<n;}
最新回复
(
0
)