今天是第一次在C#中接觸Thread,自己研究了一下其中Thread.Join()這個方法,,下面談?wù)勛约旱睦斫狻?/p> Thread.Join()在MSDN中的解釋很模糊:Blocks the calling thread until a thread terminates 有兩個主要問題:1.什么是the calling thread? 2.什么是a thread?
首先來看一下有關(guān)的概念: 我們執(zhí)行一個.exe文件實際上就是開啟了一個進程,同時開啟了至少一個線程,, 但是真正干活的是線程,,就好比一個Team有好幾個人,但是真正干活的是人不是Team. 具體到代碼來說,,以Console Application為例:程序Test.exe從Main函數(shù)開始運行,,實際上是有一個線程 在執(zhí)行Main函數(shù),我們稱作MainThread.假如我們在Main函數(shù)中聲明了一個Thread,稱作NewThread,并且調(diào)用了 NewThread.Start()的方法,,那么 MainThread在處理Main函數(shù)里面的代碼時遇到NewThread.Start()時,,就會 去調(diào)用NewThread. 基于上面的討論,我們可以得出結(jié)論:在我們剛才的例子中the calling thread就是MainThread,而a thread 指的洽洽就是MainThread調(diào)用的NewThread線程,。 現(xiàn)在回到MSDN的解釋,,我們可以這么翻譯:當(dāng)NewThread調(diào)用Join方法的時候,MainThread就被停止執(zhí)行,, 直到NewThread線程執(zhí)行完畢,。這樣就好理解了吧O(∩_∩)O哈哈~
好了,前面分析完了,,現(xiàn)在來看測試用例吧:
下面是測試的結(jié)果:
結(jié)論:從測試中我們可以很清楚的看到MainThread在NewThread.Join被調(diào)用后被阻塞,,直到NewThread 執(zhí)行完畢才繼續(xù)執(zhí)行。 |
|
來自: goodwangLib > 《C#》