0
  • 当 TThread 进入Synchronized()方法时,它会等待直到EnterCriticalSection(ThreadLock)返回。

现在,如果同时另一个 Tthread,甚至主线程调用等待 Tthread 的某个方法,哪个会运行该方法?

4

1 回答 1

2

如果与此同时,另一个线程,甚至主线程调用了等待线程的某个方法,会发生什么?

线程没有方法,所以这个问题是不合理的。

问当你调用另一个线程的方法时会发生什么是没有意义的。因为这样做是不可能的。当您调用一个方法时,该方法在调用它的线程上执行。

类似的方法将代码的执行TThread.Synchronize 安排到不同的线程上。但是,主体TThread.Synchronize是由调用者的线程执行的。

调用EnterCriticalSection不能被用户模式代码中断。因此,假设线程 AEnterCriticalSection在线程 B 持有锁的位置调用。在线程 B 释放锁之前,对线程 A的调用EnterCriticalSection不会返回。当线程 A 被阻塞等待获取锁时,线程 A 上不会执行任何代码。


从评论中的澄清看来,您的问题实际上是:

当一个方法TThread被调用时,该方法在哪个线程上执行?

答案是该方法在调用线程上执行。该课程没有什么特别之处TThread,因此适用正常规则。

于 2013-08-05T13:29:04.337 回答