C# 理解Thread.Join()方法


MSDN的解釋:阻塞調用線程,直到某個線程終止時為止。首先明確幾個問題:

1、一個進程由一個或者多個線程組成,線程之間有可能會存在一定的先后關系和互斥關系。多線程編程,首先就是要想辦法划分線程,減少線程之間的先后關系和互斥關系,這樣才能保證線程之間的獨立性,各自工作,不受影響。Google的MapReduce核心思想就是盡量減少線程之間的先后關系和互斥關系。

2、無論如何地想辦法,線程之間還是會存在一定的先后關系和互斥關系,這時候可以使用Thread.Join方法。

3、一個線程在執行的過程中,可能調用另一個線程,前者可以稱為調用線程,后者成為被調用線程。

4、Thread.Join方法的使用場景:調用線程掛起,等待被調用線程執行完畢后,繼續執行。

5、被調用線程執行Join方法,告訴調用線程,你先暫停,我執行完了,你再執行。從而保證了先后關系。

6、考慮一種有意思的情況:在當前線程內調用Thread.CurrentThread.Join() 會出現什么情況?分析:假設當前線程為A,此時調用線程為A,被調用線程也為A,由於調用線程A暫停,被調用線程A(也就是調用線程A)永遠不會執行完畢,造成死鎖。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM