圖一代碼是網課的老師寫的,圖二是我寫的。
老師在send的go程中與recv的go程中都加了exitChan,然后在main函式中通過遍歷拿出exitChan的值來退出。而我只在recv的go程加了exitChan。我們運行的結果是一樣的。
請問為什么老師要在send中加exitChan,有什么意義嗎。是老師寫的對還是我寫的對呢。求大佬指教,謝謝!

uj5u.com熱心網友回復:
你要明白你的程式中通道的作用,目的是為了阻塞主執行緒,讓go程都執行完畢主執行緒才繼續所以你老師的程式和你的程式都沒問題
你老師的程式是在main里主執行緒等待send和recv的exitChan,exitChan的通道快取為2,所以必須收到2個資料阻塞才能解開,所以send和recv都發送一次資料。(當然,recv依賴于send的ch通道的資料,也就是保證先send后recv,這個就不多說了)
而你的程式是main主執行緒只等待readData的exitChan,exitChan的通道快取為1,所以只需要一個資料就可以了。(當然,readData依賴于writeData的intChan通道的資料,也就是保證先writeData后readData,這個也不多說了)
uj5u.com熱心網友回復:
懂了,受益匪淺,多謝大佬
uj5u.com熱心網友回復:
怪不得,終于找到答案了轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/92355.html
標籤:go語言
上一篇:[新手求助]求用python寫的藍 奏 云直鏈決議器
下一篇:如何讓字典里的內容換行
