文章
317
粉丝
1
获赞
220
访问
83.0k

评分及理由
(1)得分及理由(满分4分)
学生答案指出需要修改进入区和退出区的代码,并给出了具体的修改语句:进入区将 bool key = TRUE; 改为 bool key = FALSE;,退出区将 lock = TRUE; 改为 lock = FALSE;。然而,学生的修改存在逻辑错误:
if (key == TRUE) swap key, lock; 的主要问题在于 if 应改为 while 以实现忙等待,而学生将其改为 bool key = FALSE; 和 if (key == lock);,这完全改变了原意,无法实现互斥。因此,进入区修改错误。lock = TRUE; 改为 lock = FALSE;,这与标准答案一致,是正确的。由于学生只正确修改了退出区(1处正确),但进入区修改错误(1处错误),且标准答案要求修改两处(进入区的if改为while和退出区的lock = TRUE改为lock = FALSE),因此给予部分分数。扣分:进入区错误扣2分,退出区正确得1分,本小题得1分。
(2)得分及理由(满分3分)
学生回答“不可以”,并给出理由:“lock为共享变量,单纯使用newswap函数,并不能实现对lock互斥访问”。这一回答基本正确,指出了newSwap函数不能保证原子性,但理由表述不够精确(标准答案强调原子操作和并发执行问题)。考虑到学生抓住了核心原因(无法实现互斥),且根据“禁止扣分”原则,不因表述细节扣分,因此给予满分。
本小题得3分。
题目总分:1+3=4分
登录后发布评论
暂无评论,来抢沙发