- 当 TThread 进入
Synchronized()
方法时,它会等待直到EnterCriticalSection(ThreadLock)
返回。
现在,如果同时另一个 Tthread,甚至主线程调用等待 Tthread 的某个方法,哪个会运行该方法?
Synchronized()
方法时,它会等待直到EnterCriticalSection(ThreadLock)
返回。现在,如果同时另一个 Tthread,甚至主线程调用等待 Tthread 的某个方法,哪个会运行该方法?
如果与此同时,另一个线程,甚至主线程调用了等待线程的某个方法,会发生什么?
线程没有方法,所以这个问题是不合理的。
问当你调用另一个线程的方法时会发生什么是没有意义的。因为这样做是不可能的。当您调用一个方法时,该方法在调用它的线程上执行。
类似的方法将代码的执行TThread.Synchronize
安排到不同的线程上。但是,主体TThread.Synchronize
是由调用者的线程执行的。
调用EnterCriticalSection
不能被用户模式代码中断。因此,假设线程 AEnterCriticalSection
在线程 B 持有锁的位置调用。在线程 B 释放锁之前,对线程 A的调用EnterCriticalSection
不会返回。当线程 A 被阻塞等待获取锁时,线程 A 上不会执行任何代码。
从评论中的澄清看来,您的问题实际上是:
当一个方法
TThread
被调用时,该方法在哪个线程上执行?
答案是该方法在调用线程上执行。该课程没有什么特别之处TThread
,因此适用正常规则。