[英]Which thread will run a method of a TThread instance? (In Wait mode)
Synchronized()
方法时,它会一直等到EnterCriticalSection(ThreadLock)
返回。 现在,如果同时运行该方法,另一个Tthread,甚至主线程调用等待Tthread的某些方法?
如果在此期间,另一个线程,甚至主线程调用等待线程的某些方法会发生什么?
线程没有方法,所以这个问题不是一个问题。
询问调用另一个线程的方法时会发生什么是没有意义的。 因为不可能这样做。 当您调用方法时,该方法在调用它的线程上执行。
像TThread.Synchronize
这样的方法将代码的执行安排到不同的线程上。 但是, TThread.Synchronize
的主体由调用者的线程执行。
用户模式代码不能中断对EnterCriticalSection
的调用。 因此,假设线程A在线程B持有锁的位置调用EnterCriticalSection
。 在线程B释放锁之前,对线程A的EnterCriticalSection
调用不会返回。 当线程A被阻塞等待获取锁时,没有代码将在线程A上执行。
从评论中的澄清看,您的问题实际上是:
调用
TThread
的方法时,该方法执行哪个线程?
答案是该方法在调用线程上执行。 TThread
类没有什么特别之处,因此适用常规规则。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.