线程 T1 锁定互斥锁 M 并等待条件 C (释放 M )。< / p>
线程 T2 锁定互斥锁 M 并发出条件 C 。
在文献中,声明一旦发出 C , T1 就会醒来并重新获取 M 。
我对 T2 所发生的事情表示怀疑,因为它在信号 C 之前获得 M 。
T2 在发出信号之前获得的 M 会发生什么?
T1 是否已准备好但已被阻止,仅在 T2 发布 M 之后才会执行,以便重新获取?
T1 是否已准备好并在 T2 被阻止之前执行,直到 M 被释放,才能重新获取?
他们只是同时执行, T1 , M 获得, T2 , M 释放(或还获得了?)
答案 0 :(得分:0)
发信号通知条件C唤醒线程T1,然后它必须通过锁定它来重新获取互斥锁M.为了做到这一点,T2必须先释放M.
所以答案是,T1唤醒信号,等待获取M,T2释放M,T1获取M,T1和T2同时执行。