[英]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.