第 46 题
(8分)某进程的两个线程T1和T2 并发执行A B C D E 和F 共6个操作,其中T1 执行A E和F, T2执行 B C 和 D。题46图表示上述6个操作的执行顺序所必须满足的约束:C 在A 和B 完成后执行,D 和E 在C 完成后执行,F 在E 完成后执行。请使用信号量的walt() 、slgnal( 操作描述T1 和T2 之间的同 步关系,并说明所用信号量的作用及其初值。
[tag_link]
[tag_link]
进程 T1 要依次执行 A、E、F。进程 T2 要执行 B、C、D。由图可知,T2 执行 C 必须在 T1 执行完 A 之后;T1 执行 E 必须在 T2 执行完 C 之后。因此,有两对同步关系。信号量的定义 和同步关系的描述如下:
semaphore AC = 0 ;
semaphore CE = 0 ;
T1 () {
A ;
signal ( AC );
wait ( CE );
E ;
F ;
}
T2 () {
B ;
wait ( AC );
C ;
signal ( CE );
D ;
}