文章
295
粉丝
0
获赞
1
访问
81.9k

评分及理由
(1)得分及理由(满分4分)
学生指出了两处错误:
if (key == TRUE) 改为 while (key == TRUE)。这与标准答案一致,正确。lock = TRUE; 改为 swap key, lock;。这与标准答案不一致。标准答案是将 lock = TRUE; 改为 lock = FALSE;。学生的修改是错误的,因为退出区不应该再次交换,而应该直接释放锁(将 lock 设为 FALSE)。这是一个逻辑错误,会导致互斥失败。因此,第一问部分正确。第一处修改正确得2分,第二处修改错误扣2分。本小题得2分。
(2)得分及理由(满分3分)
学生回答“不可用 newSwap 代替”,结论正确。给出的理由核心是“newSwap 不同于 swap,它不可实现原子操作”,并且提到了 lock 是共享变量需要互斥访问。这与标准答案的核心思想(swap是原子操作,newSwap函数调用无法保证原子性)是一致的。虽然表述上不如标准答案详细(例如没有举例说明并发执行时可能出现的交错情况),但核心点已涵盖,没有逻辑错误。
因此,本小题得3分。
题目总分:2+3=5分
登录后发布评论
暂无评论,来抢沙发