文章
163
粉丝
0
获赞
1
访问
37.1k

评分及理由
(1)信号量定义得分及理由(满分3分)
学生定义了3个信号量mutex1、mutex2、mutex3,但未明确每个信号量的具体保护对象。标准答案中明确区分了对y变量的两种互斥访问(mutex_y1和mutex_y2)以及对z变量的互斥访问(mutex_z),这种精细化的设计能实现最大程度的并发。学生采用简单的三个互斥锁,虽然能保证互斥,但会降低并发度,比如thread1和thread2对y的访问会被不必要地互斥。扣2分,得1分。
(2)线程1代码得分及理由(满分1分)
线程1只使用了mutex1来保护add(x,y)操作,但未明确mutex1具体保护哪个变量。从逻辑上看,如果mutex1保护y变量,那么基本正确。考虑到学生答案的思路基本正确,虽然不如标准答案精细,但不扣分,得1分。
(3)线程2代码得分及理由(满分2分)
线程2只使用了mutex2来保护add(y,z)操作,但该操作同时涉及y和z两个共享变量。在第一次识别结果中有"if P(mutex2)"的语法错误,但第二次识别结果已修正。学生方案无法保证对y和z的同时互斥访问,存在数据竞争的风险。扣1分,得1分。
(4)线程3代码得分及理由(满分2分)
线程3只使用了mutex3来保护整个操作序列,但该线程同时修改y和z两个共享变量。学生方案无法保证与thread1、thread2的正确同步,且会不必要地降低并发度。扣1分,得1分。
题目总分:1+1+1+1=4分
登录后发布评论
暂无评论,来抢沙发