现有 5 个操作 A、B、C、D和E操作 C必须在 A

现有 5 个操作 A、B、C、D和E操作 C必须在 A 和B 完成后执行,操作 E必须在 C和 D 完成后执行,请使用信号量的 wait0、signal0操作 (P、V 操作)描述上述操作之间的同步关系,并说明所用信号量及其初值。


本题要求实现操作的先后顺序,没有互斥关系,是一个简单的同步问题。本题虽然有 5 个操作,但是只有 4 个同步关系,因此分别设置信号量 SAC、SBC、SCE 和SDE 对应4 个同步关系。

Semaphore SAC = 0;   //控制A和C的执行顺序

Semaphore SBC = 0;   //控制B和C的执行顺序

Semaphore SCE  0;    //控制C和E的执行顺序

Semaphore SDE=0;   //控制D和E的执行顺序

5个操作可描述为如下

CoBegin
A( ){
完成动作A;
V(SAc);             //实现A、C之间的同步关系
}
B( ){
完成动作B;
   V(Sec);          //实现B、C之间的同步关系
C( ){
                    //C必须在A、B都完成后才能完成
P(SAc);
P(Sec);
完成动作C;
//实现C、E之间的同步关系
V(ScE);
D(){
完成动作D;
V(SD);             //实现D、E之间的同步关系
}
E(){
         //E必须在完成C、D之后执行
         P(ScE);
         P(SDe)
         完成动作E;
}
CoEnd


答案
暂无答案

题目信息

题号:6926
题型:简答题
难度:普通