C 多執行緒 Join

2021-06-18 01:05:58 字數 1170 閱讀 2410

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading;

namespace test

console.writeline(thread.currentthread.name + " has finished");

}static void main(string args)

else

}console.read();}}

}

今天是第一次在c#中接觸thread,自己研究了一下其中thread.join()這個方法,下面談談自己的理解。

thread.join()在msdn中的解釋很模糊:blocks the calling thread until a thread terminates

有兩個主要問題:1.什麼是the calling thread?

2.什麼是a thread?

首先來看一下有關的概念: 我們執行乙個.exe檔案實際上就是開啟了乙個程序,同時開啟了至少乙個執行緒,

但是真正幹活的是執行緒,就好比乙個team有好幾個人,但是真正幹活的是人不是team.

在執行main函式,我們稱作mainthread.假如我們在main函式中宣告了乙個thread,稱作newthread,並且呼叫了

newthread.start()的方法,那麼 mainthread在處理main函式裡面的**時遇到newthread.start()時,就會

去呼叫newthread.

基於上面的討論,我們可以得出結論:在我們剛才的例子中the calling thread就是mainthread,而a thread

指的洽洽就是mainthread呼叫的newthread執行緒。

現在回到msdn的解釋,我們可以這麼翻譯:當newthread呼叫join方法的時候,mainthread就被停止執行,

直到newthread執行緒執行完畢

。這樣就好理解了吧o(∩_∩)o哈哈~

好了,前面分析完了,現在來看測試用例吧:

多執行緒 JOIN

join就是阻塞呼叫執行緒,直到該執行緒結束後,呼叫執行緒才能繼續執行。該影響只存在於執行join方法的執行緒和呼叫該執行緒的執行緒之間 如在t1執行緒中呼叫t2.join 則需要t2執行緒執行完後t1方能繼續執行 試一試 執行緒的插入 c 初學課堂 注意新增命名空間 using system.th...

C 多執行緒JOIN方法初探

說明 剛接觸多執行緒時,弄不明白join 的作用,查閱了三本書,都不明不白。後來經過自己的一番試驗,終於弄清了join 的本質。大家看看我這種寫法是否易懂,是否真的寫出了join 的本質,多提寶貴意見。試一試 執行緒的插入 c 初學課堂 注意新增命名空間 using system.threading...

C 多執行緒JOIN方法初探

說明 剛接觸多執行緒時,弄不明白join 的作用,查閱了三本書,都不明不白。後來經過自己的一番試驗,終於弄清了join 的本質。大家看看我這種寫法是否易懂,是否真的寫出了join 的本質,多提寶貴意見。試一試 執行緒的插入 c 初學課堂 注意新增命名空間 using system.threading...