Synchronized()
方法时,它等待直到EnterCriticalSection(ThreadLock)
返回。现在,如果同时有另一个Tthread或什至是主线程调用了正在等待的Tthread的某个方法,那么哪个将运行该方法?
如果在此期间,另一个线程甚至主线程调用了等待线程的某个方法,会发生什么情况?
线程没有方法,所以这个问题是不合逻辑的。
询问当调用另一个线程的方法时会发生什么是没有意义的。因为这是不可能的。调用方法时,该方法在调用它的线程上执行。
类似的方法可以将代码的执行TThread.Synchronize
安排在另一个线程上。但是,的主体TThread.Synchronize
是由调用者的线程执行的。
EnterCriticalSection
不能通过用户模式代码中断对的调用。因此,假设线程AEnterCriticalSection
在线程B持有锁的位置进行调用。在EnterCriticalSection
线程B释放锁定之前,不会返回对线程A的调用。当线程A被阻塞等待获取锁时,线程A上不会执行任何代码。
从评论中的澄清看来,您的问题实际上是:
当
TThread
调用的方法时,该方法在哪个线程上执行?
答案是该方法在调用线程上执行。TThread
该类没有什么特别的,因此通常的规则适用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句