文章

394

粉丝

0

获赞

0

访问

84.3k

头像
2022年(408)计算机学科专业基础综合试题 - 第46题回答
操作系统
发布于2025年12月4日 16:54
阅读数 3

 

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...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发