1. 程式人生 > >golang 初體驗 - channel.2 - 超時機制

golang 初體驗 - channel.2 - 超時機制

超時機制 Golan font sele style 分享圖片 其中 channel 超時時間

channel 雖然很好用,但是我們也要考慮異常情況,比如:超時

go 語言怎麽解決這個超時問題呢?

可以利用 select 語句:

技術分享圖片

select 的用法與 switch 語言非常類似,由 select 開始一個新的選擇塊,每個選擇條件由 case 語句來描述。

與 switch 語句可以選擇任何可使用相等比較的條件相比,select 有比較多的限制,其中最大的一條限制就是每個 case 語句裏必須是一個 IO 操作。

看這樣一個程序:

技術分享圖片

它會一直隨機輸出0和1

介紹完 select 語句,然後我們看 go 語言的 channel 超時機制的實現,代碼:

技術分享圖片

24行模擬了真實的超時時間,6秒,超時後給 timeout 信道推送了 true,for 循環裏讀到了超時信號後中斷程序,故,輸出如下:

技術分享圖片

不要通過共享內存來通信,而應該通過通信來共享內存

golang 初體驗 - channel.2 - 超時機制