文章
337
粉丝
0
获赞
0
访问
48.1k

评分及理由
(1)得分及理由(满分4分)
学生指出了第一处错误是“if (key == TRUE)”,并给出了修改方案“if (key == TRUE && lock == FALSE)”。这个修改方案是错误的,因为它没有解决原代码的核心问题:原代码无法实现互斥,且退出区解锁错误。正确的修改应该是将“if”改为“while”进行轮询,并将退出区的“lock = TRUE;”改为“lock = FALSE;”。学生只修改了进入区的条件,且修改后的逻辑仍然无法保证互斥(例如,当lock为FALSE时,两个线程可能同时判断条件成立并进入临界区),同时完全没有提及退出区的错误。因此,该部分回答存在严重的逻辑错误,未能正确修正代码。扣4分,得0分。
(2)得分及理由(满分3分)
学生正确回答了“不可以”,并给出了理由:因为newSwap函数不具有原子性,而实现交换功能的代码应具有原子性,不允许被中断。这个理由与标准答案的核心观点一致,即非原子操作可能导致多个线程同时进入临界区。因此,该部分回答正确。得3分。
题目总分:0+3=3分
登录后发布评论
暂无评论,来抢沙发