簡體   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