go語言協程認識-1

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
//關於go語言協程通道的使用//1.通道可以帶緩衝,也可以不帶//2.不帶緩衝的,不管是讀還是寫都會阻塞//3.帶緩衝的,如果緩衝溢出,就會阻塞//4.make(chan int,1)和make(chan int)是不一樣的,第一種通道內寫入兩個資料會阻塞,第二種寫入就會阻塞//5.如果協程在阻塞,但是主程已經退出執行,則認為程式死結//6.如果程式除了主程之外(沒有一個協程),處於阻塞狀態,則認為程式死結//7.一句話:只有一個協程(可以是主程),在阻塞,認為程式處於死結//8.子程式是協程的一種特例,阻塞到子程式執行完畢返回,而協程可能等不到執行完畢就返回,然後條件滿足再回來執行package mainimport ("fmt")func main()  {//make(chan string,1)和make(chan string)是不一樣的//make(chan string,1)中通道的buffer是1//這裡如果寫成make(chan string)會導致阻塞,死結,因為沒有緩衝的通道,不管是讀還是寫都會阻塞//兩個解決方案,將push資料移動到寫成中(使用go語句),或增加緩衝,//緩衝沒有達到上限,就不會出現死結的情況chan1 := make(chan string,1)func() {fmt.Printf("在協程中,Push資料到通道\n");chan1 <- "GO吧"}()fmt.Printf("從通道中讀取到的資料:%v", <- chan1)}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.