-
线程T1锁定互斥锁M并等待条件C(释放M)。
-
线程T2锁定互斥锁M并发出条件C的信号。
文献中指出,一旦C发出信号,T1就会醒来并重新获取M。
我对T2会发生什么感到怀疑,因为它在发出C信号之前获得了M。
T2关于信号传导前获得的M会发生什么?
-
T1是否准备就绪但被阻止,仅在T2释放M后执行,以便重新获取?
-
T1是否准备好并执行,而T2被阻止,直到M释放,以便重新获取?
-
它们只是同时执行,T1和M获得,T2与M释放(或也获得?)
-
?
通过信号发送条件C唤醒线程T1,然后它必须通过锁定来重新获取互斥对象M。为此,T2必须首先释放M。
所以答案是,T1在信号上醒来,等待获取M,T2释放M,T1获取M,T1和T2同时执行。