亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

golang判斷channel已經close的方法

發布時間:2020-05-25 18:00:04 來源:億速云 閱讀:893 作者:鴿子 欄目:編程語言

channel有點類似于管道,它在goroutine同步與通信中,有著起承轉合的作用,同時也是Golang實現CSP模型的關鍵。

golang 中大部分類型都是值類型(只有 slice / channel / map 是引用類型),讀/寫類型是值類型的 channel 時,如果元素 size 比較大時,應該使用指針代替,避免頻繁的內存拷貝開銷。

golang判斷channel是否已經close的方法:

讀channel的時候判斷其是否已經關閉

_,ok := <- jobs

此時如果 channel 關閉,ok 值為 false

寫入channel的時候判斷其是否已經關閉

1、_,ok := <- jobs

此時如果 channel 關閉,ok 值為 false,如果 channel 沒有關閉,則會漏掉一個 jobs

2、使用 select 方式

再創建一個 channel,叫做 timeout,如果超時往這個 channel 發送 true,在生產者發送數據給 jobs 的 channel,用 select 監聽 timeout,如果超時則關閉 jobs 的 channel.

go func() {
 time.Sleep(time.Second * 3)
 timeout <- true
 }()
go func() {
 for i := 0; ; i++ {
 select {
     case <-timeout:
         close(jobs)
         return
 
     default:
         jobs <- i
         fmt.Println("produce:", i)
         }
     }
 }()

以上就是golang如何判斷channel已經close的詳細內容,更多請關注億速云其它相關文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

金阳县| 固镇县| 奉化市| 杭锦旗| 前郭尔| 苏尼特左旗| 新竹市| 昌图县| 台山市| 西昌市| 潮州市| 凤城市| 东阿县| 漾濞| 怀柔区| 陆良县| 垣曲县| 含山县| 炎陵县| 双牌县| 神池县| 涿州市| 陆丰市| 梓潼县| 嘉定区| 驻马店市| 云安县| 长寿区| 开江县| 澄城县| 岑巩县| 楚雄市| 天柱县| 宜昌市| 凤山县| 渝北区| 东莞市| 岳阳市| 五原县| 郁南县| 阿鲁科尔沁旗|