select可以監聽channel的資料流動
select的用法與switch語法非常類似,由select開始的乙個新的選擇塊,每個選擇條件由case語句來描述
與switch語句可以選擇任何使用相等比較的條件相比,select由比較多的限制,其中最大的一條限制就是每個case語句裡必須是乙個io操作
select
在乙個select語句中,go會按順序從頭到尾評估每乙個傳送和接收的語句。
如果其中的任意乙個語句可以繼續執行(即沒有被阻塞),那麼就從那些可以執行的語句中任意選擇一條來使用。
如果沒有任意一條語句可以執行(即所有的通道都被阻塞),那麼有兩種可能的情況:
①如果給出了default語句,那麼就會執行default的流程,同時程式的執行會從select語句後的語句中恢復。
②如果沒有default語句,那麼select語句將被阻塞,直到至少有乙個case可以進行下去。
Golang 併發程式設計
目錄傳送者 通道 有可能有資料阻塞 接受者 package main import fmt time func main time.sleep 2 time.second 主協程取資料 for i 0 i 3 i fmt.println 主協程結束 傳送者 通道 資料 資料 接受者 func mai...
Golang 併發程式設計
目錄傳送者 通道 有可能有資料阻塞 接受者 package main import fmt time func main time.sleep 2 time.second 主協程取資料 for i 0 i 3 i fmt.println 主協程結束 傳送者 通道 資料 資料 接受者 func mai...
golang併發程式設計
在早期,cpu都是以單核的形式順序執行機器指令。c語言 php正是這種順序程式語言的代表,即所有的指令都是以序列的方式執行,在相同的時刻有且僅有乙個cpu在順序執行程式的指令。隨著處理器技術的發展,單核時代以提公升處理器頻率來提高執行效率的方式遇到了瓶頸。單核cpu的發展的停滯,給多核cpu的發展帶...