C 執行緒這個煩人的join

2021-08-06 07:35:19 字數 1264 閱讀 1286

今天是第一次在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哈哈~ 

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

titleusing 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(); }

} }下面是測試的結果:

結論:從測試中我們可以很清楚的看到mainthread在newthread.join被呼叫後被阻塞,直到newthread

執行完畢才繼續執行。

執行緒C 執行緒聯合join

執行緒聯合join join 方法的作用是呼叫執行緒等待該執行緒完成後,才能繼續用下執行。下面我寫了乙個簡單例子,用來體現出join 方法是如何使用的。package com.yzy.text public class threadjoin catch interruptedexception e ...

C 執行緒的Join方法

在.net中,join方法主要是用來阻塞呼叫執行緒,直到某個執行緒終止或經過了指定時間為止。join方法的宣告如下 public void join public bool join int millisecondstimeout public bool join timespan timeout ...

C 多執行緒 Join

using system using system.collections.generic using system.linq using system.text using system.threading namespace test console.writeline thread.curre...