T46 前驱后继 同步互斥 两个线程包含多个操作
设某进程的两个线程 T1 和 T2, 其中 T1 包含操作 A E F, T2 包含操作 B C D.
A->C B->C
C->E C->D
E->F
分析
- 线程内部操作顺序执行:天然满足
- 线程之间的操作顺序:使用信号量同步
semaphore semA = 0, semC = 0;
void T1() {
// 执行操作 A
V(semA); // 释放 A 的信号量
P(semC); // 等待 C 完成
// 执行操作 E
// 执行操作 F
}
void T2() {
// 执行操作 B
P(semA); // 等待 A 完成
// 执行操作 C
V(semC); // 释放 C 的信号量
// 执行操作 D
}