久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

golang中的通道是什么

177次閱讀
沒有評論

共計 1623 個字符,預計需要花費 5 分鐘才能閱讀完成。

這篇文章給大家分享的是有關 golang 中的通道是什么的內容。丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考,一起跟隨丸趣 TV 小編過來看看吧。

golang 中的通道類型是一種特殊的類型,類型名字為 chan。在任何時候,同時只有一個 goroutine 訪問通道進行并發和獲取數據,goroutine 間通過通道就可以進行通信。我們可以通過 go 關鍵字創建 goroutine。
通道本身是同步的,通道的發送和接受數據默認是同步的,且遵循先進先出的規則以保證數據發送的順序。

通道分為雙向通道和單向通道。

雙向通道:

chan1 := make(chan int, 10)

單向通道:

# 單向只寫通道,10  表示通道的容量
chan2 := make(chan  - int, 10)
#單向只讀通道,10 表示通道的容量
chan3 := make(- chan int, 10)
package main
import (
 time 
 github.com/golang/glog 
func read(readChan  -chan int) {
 for data := range readChan {glog.Info(data)
func write(writeChan chan - int) {
 for i := 0; i   100; i++ {
 writeChan  - i
 glog.Infof(write: %s , i)
func main() {
 //  雙向通道
 writeReadChan := make(chan int)
 //  傳入雙向通道自動會轉換成一個單項通道
 go write(writeReadChan)
 glog.Info(start to read data from channel!)
 //  傳入雙向通道會自動轉換成一個單項通道 `
 go read(writeReadChan)
 //  關閉 chan
 close(writeReadChan)
 time.Sleep(time.Second * 100)
 glog.Info(finishedAll!!)
}

通道分無緩沖通道和緩沖通道

無緩沖通道

unbufferChan1 := make(chan int)
unbufferChan2 := make(chan int, 0)

緩沖通道

bufferChan := make(chan int, 1)

無緩沖通道的特點是,發送的數據需要被讀取后,發送才會完成,它阻塞場景:

通道中無數據,但執行讀通道。

通道中無數據,向通道寫數據,但無協程讀取。

func occasion1() { noBufChan := make(chan int)
  -noBufChan
 fmt.Println(read )
//  場景 2
func occasion2() { ch := make(chan int)
 ch  - 1
 fmt.Println(write success no block)
}

有緩存通道的特點是,有緩存時可以向通道中寫入數據后直接返回,緩存中有數據時可以從通道中讀到數據直接返回,這時有緩存通道是不會阻塞的,它阻塞場景是:

通道的緩存無數據,但執行讀通道。

通道的緩存已經占滿,向通道寫數據,但無協程讀。

//  場景 1
func occasion1() { bufCh := make(chan int, 2)
  -bufCh
 fmt.Println(read from no buffer channel success)
//  場景 2
func occasion2() { ch := make(chan int, 2)
 ch  - 1
 ch  - 2
 ch  - 3
 fmt.Println(write success no block)
}

感謝各位的閱讀!關于“golang 中的通道是什么”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-16發表,共計1623字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 濮阳市| 鄯善县| 延长县| 科尔| 大连市| 宁波市| 叶城县| 藁城市| 屯门区| 西安市| 六盘水市| 平陆县| 荆门市| 勃利县| 抚松县| 庄河市| 蒙自县| 永善县| 虹口区| 江安县| 乌兰浩特市| 栾城县| 焉耆| 霍山县| 上犹县| 湖南省| 公安县| 江口县| 宁波市| 万全县| 井研县| 团风县| 云南省| 湖口县| 卫辉市| 山阳县| 德保县| 凭祥市| 红桥区| 临澧县| 喜德县|