文章
394
粉丝
0
获赞
0
访问
84.3k
Semaphore sem A=0,sem B=0,sem C=0,sem E=0;//sem_A:标记操作 A 是否完成(初值0);sem_B:标记操作 B 是否完成(初值0);sem_C:标记操作 C 是否完成(初值0);sem_E:标记操作 E 是否完成(初值0)。
T1() {
// 执行操作A
执行A;
signal(sem_A); // A完成,释放sem_A(通知C可以等待A)
// 等待C完成后,执行E
wait(sem_C); // 申请sem_C,等待C完成
执行E;
signal(sem_E); // E完成,释放sem_E(通知F可以等待E)
// 等待E完成后,执行F
wait(sem_E); // 申请sem_E,等待E完成
执行F;
}
T2() {
// 执行操作B
执行B;
signal(sem_B); // B完成,释放sem_B(通知C可以等待B)
// 等待A和B都完成后,执行C
wait(sem_A); // 申请sem_A,等待A完成
wait(sem_B); // 申请sem_B,等待B完成
执行C;
signal(sem_C); // C完成,释放sem_C(通知E和D可以等待C)
signal(sem_C); // 由于E和D都需要等待C,需释放2次(或用计数信号量初值0,C完成后signal两次)
&nb...
登录后发布评论
暂无评论,来抢沙发