文章
63
粉丝
0
获赞
0
访问
13.4k
Semaphore SAC = 0; //描述操作A和C之间的同步关系
Semaphore SCE = 0; // 描述操作A和操作C之间的同步关系
T1:
A;
signal(SAC);
wait(SCE);
E;
F;
T2:
B;
wait(SAC);
C;
signal(SCE);
D;
评分及理由
(1)信号量定义及初值(满分2分)
得分:1分
理由:学生定义了两个信号量SAC和SCE,初值均为0,符合要求。但SCE的注释写错了,写成了"描述操作A和操作C之间的同步关系",实际上应该是控制C和E的同步关系。由于初值正确且主要信号量定义正确,扣1分。
(2)线程T1的同步逻辑(满分3分)
得分:2分
理由:T1中A操作后signal(SAC)正确,E操作前wait(SCE)正确,但F操作缺少对E完成的等待条件。按照题目要求,F必须在E完成后执行,但学生代码中F直接跟在E后,没有使用信号量确保E完成后才执行F。由于这是同一线程内的操作顺序,虽然逻辑上可能正确,但不符合题目要求使用信号量描述同步关系的意图,扣1分。
(3)线程T2的同步逻辑(满分3分)
得分:2分
理由:T2中B操作后直接执行wait(SAC)然后C操作,缺少对B完成到C执行的同步控制。按照题目要求,C必须在A和B都完成后执行,但学生代码中C只等待了A完成(通过SAC),没有确保B也完成。虽然B在同一线程中,但题目要求用信号量描述同步关系,这里存在逻辑缺陷,扣1分。
题目总分:1+2+2=5分
登录后发布评论
暂无评论,来抢沙发