0
  1. 线程T1锁定互斥锁M并在条件C上等待(释放M)。

  2. 线程T2锁定互斥锁M并发出条件C信号。

在文献中,一旦C发出信号,T1就会唤醒并重新获取M

我对T2发生的事情持怀疑态度,因为它在发出信号C之前获得了M

在发信号之前获得的关于M的T2会发生什么?

  1. T1是否已准备好但被阻止,仅在T2释放M后才执行,以便重新获取它?

  2. T1是否准备好并执行,而T2被阻塞直到M被释放,以便重新获取它?

  3. 它们只是同时执行,T1M获得,T2M释放(或也获得?)

  4. ?

4

1 回答 1

0

发出条件 C 的信号会唤醒线程 T1,然后它必须通过锁定它来重新获取互斥锁 M。为此,T2 必须首先释放 M。

所以答案是,T1 收到信号唤醒,等待获取 M,T2 释放 M,T1 获取 M,T1 和 T2 并发执行。

于 2012-12-16T18:25:37.493 回答