關於C#中Thread.Join()的一點理解
轉自:http://www.cnblogs.com/slikyn/articles/1525940.html
今天是第一次在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.
具體到程式碼來說,以Console Application為例:程式Test.exe從Main函式開始執行,實際上是有一個執行緒
在執行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哈哈~
好了,前面分析完了,現在來看測試用例吧:
下面是測試的結果:
結論:從測試中我們可以很清楚的看到MainThread在NewThread.Join被呼叫後被阻塞,直到NewThread
執行完畢才繼續執行。
相關文章
- 關於latch的一點點理解
- 關於crontab 的一點理解
- C#中關於 object,dynamic 一點使用心得C#Object
- 關於ora_rowscn的一點理解
- 關於BP演算法的一點理解演算法
- 關於建構函式的一點理解函式
- 關於Dart中Future的一些理解Dart
- 關於Swift中Properties的一些理解Swift
- ruby關於flip-flop理解上一個注意點
- C#多執行緒詳解(一) Thread.Join()的詳解C#執行緒thread
- 關於position的一些理解
- 關於react中setState的深入理解React
- 關於使用iview中Table元件的一點小技巧View元件
- 筆記:React 中關於 key 的一點總結筆記React
- 關於C#中async/await的用法C#AI
- 關於PHP 的一點點小分享PHP
- 關於Java的一點想法Java
- 理解C#中的ValueTaskC#
- 關於position定位的一些理解
- 關於DDD概念的一些理解和困惑,煩勞Banq點撥
- 關於共享段與SGA的一點理解 上一週買了兩本書,
- 關於B*tree索引(index)的中度理解及bitmap 索引的一點探究(zt)索引Index
- php中關於會話機制的理解PHP會話
- 關於Vue中插槽的理解和總結Vue
- Python中關於Thread的一點小知識Pythonthread
- 【轉】關於oracle中Move機制的一點探討Oracle
- 關於MySQL中的自聯結的通俗理解MySql
- 關於Oracle GoldenGate中Extract的checkpoint的理解OracleGo
- 關於Laravel中的Redis如何使用Lua的一點記錄LaravelRedis
- 關於模式爭論的一點點思考模式
- 關於C# 中的Attribute 特性 經典C#
- 關於 DOM 的理解
- 關於Vuex的理解Vue
- 關於servlet的理解Servlet
- 關於-this指向的理解
- 關於DCI的理解
- 對 Python 中 GIL 的一點理解Python
- 關於同步的一點思考-下