繁体   English   中英

哪个线程将运行TThread实例的方法? (在等待模式下)

[英]Which thread will run a method of a TThread instance? (In Wait mode)

  • 当TThread进入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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM