天天看點

《C#多線程程式設計實戰(原書第2版)》——1.4 線程等待

本節書摘來自華章出版社《c#多線程程式設計實戰(原書第2版)》一書中的第1章,第1.4節,作者(美)易格恩·阿格佛溫(eugene agafonov),黃博文 黃輝蘭 譯,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

本節将展示如何讓程式等待另一個線程中的計算完成,然後在代碼中使用該線程的計算結果。使用thread.sleep行不通,因為并不知道執行計算需要花費的具體時間。

為了學習本節,你需要安裝visual studio 2015。除此之外無需其他準備。本節的源代碼放置在booksampleschapter1recipe3目錄中。

請執行以下步驟來了解如何讓一個程式等待另一個線程中的計算完成,并随後使用該線程的計算結果:

1.啟動visual studio 2015。建立一個新的c#控制台應用程式項目。

2.在program.cs檔案中加入以下using指令:

《C#多線程程式設計實戰(原書第2版)》——1.4 線程等待

3.在main方法下面加入以下代碼片段:

《C#多線程程式設計實戰(原書第2版)》——1.4 線程等待

4.在main方法中加入以下代碼片段:

《C#多線程程式設計實戰(原書第2版)》——1.4 線程等待

5.運作程式。

當程式運作時,啟動了一個耗時較長的線程來列印數字,列印每個數字前要等待兩秒。但我們在主程式中調用了t.join方法,該方法允許我們等待直到線程t完成。當線程t完成時,主程式會繼續運作。借助該技術可以實作在兩個線程間同步執行步驟。第一個線程會等待另一個線程完成後再繼續執行。第一個線程等待時是處于阻塞狀态(正如1.3節中調用thread.sleep方法一樣)。