go 詳解信道/通道 channel

1.信道,就是一個(gè)管道,連接多個(gè)goroutine程序 殷勘,它是一種隊(duì)列式的數(shù)據(jù)結(jié)構(gòu),遵循先入先出的規(guī)則昔搂。

package main

import (
    "fmt"
    "time"
)

func chaninit() {
    // 定義 信道實(shí)例 := make(chan 信道類(lèi)型)
    ch := make(chan int, 10)

    // 信道的容量和長(zhǎng)度
    fmt.Println(cap(ch))
    ch <- 12
    fmt.Println(len(ch))

}

func increment(ch chan bool, x *int) {
    ch <- true
    *x = *x + 1
    <-ch
}

func test_incr() {
    // 注意要設(shè)置容量為 1 的緩沖信道
    pipline := make(chan bool, 1)

    var x int
    for i := 0; i < 1000; i++ {
        go increment(pipline, &x)
    }

    // 確保所有的協(xié)程都已完成
    // 以后會(huì)介紹一種更合適的方法(Mutex)玲销,這里暫時(shí)使用sleep
    fmt.Println("x 的值:0000", x)
    time.Sleep(time.Second)
    fmt.Println("x 的值:", x)
}
func for_test() {
    pipeline := make(chan int)

    go func() {
        pipeline <- 100
    }()
    go func() {
        num := <-pipeline
        fmt.Println("receive", num)
    }()
}
func main() {

    test_incr()
    time.Sleep(10 * time.Second)
}


package main

import (
    "fmt"
    "sync"
)

func test001() {
    ch := make(chan bool)
    go func() {
        for i := 0; i < 5; i++ {
            fmt.Println(i)
        }
        ch <- true
    }()
    <-ch
}

func worker(x int, wg *sync.WaitGroup) {
    defer wg.Done()
    for i := 0; i < 500; i++ {
        fmt.Println(i)
    }
}

func test002() {
    var wg sync.WaitGroup
    wg.Add(2)
    go worker(1, &wg)
    go worker(2, &wg)
    wg.Wait()

}

func main() {
    test001()
    test002()
}


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市摘符,隨后出現(xiàn)的幾起案子贤斜,更是在濱河造成了極大的恐慌,老刑警劉巖逛裤,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瘩绒,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡带族,警方通過(guò)查閱死者的電腦和手機(jī)锁荔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)蝙砌,“玉大人阳堕,你說(shuō)我怎么就攤上這事≡窨耍” “怎么了恬总?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)肚邢。 經(jīng)常有香客問(wèn)我壹堰,道長(zhǎng),這世上最難降的妖魔是什么骡湖? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任贱纠,我火速辦了婚禮,結(jié)果婚禮上勺鸦,老公的妹妹穿的比我還像新娘并巍。我一直安慰自己目木,他們只是感情好换途,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著刽射,像睡著了一般军拟。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上誓禁,一...
    開(kāi)封第一講書(shū)人閱讀 51,692評(píng)論 1 305
  • 那天懈息,我揣著相機(jī)與錄音,去河邊找鬼摹恰。 笑死辫继,一個(gè)胖子當(dāng)著我的面吹牛怒见,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播姑宽,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼遣耍,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了炮车?” 一聲冷哼從身側(cè)響起舵变,我...
    開(kāi)封第一講書(shū)人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎瘦穆,沒(méi)想到半個(gè)月后纪隙,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡扛或,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年绵咱,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片熙兔。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡麸拄,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出黔姜,到底是詐尸還是另有隱情拢切,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布秆吵,位于F島的核電站淮椰,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏纳寂。R本人自食惡果不足惜主穗,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望毙芜。 院中可真熱鬧忽媒,春花似錦、人聲如沸腋粥。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)隘冲。三九已至闹瞧,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間展辞,已是汗流浹背奥邮。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人洽腺。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓脚粟,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親蘸朋。 傳聞我的和親對(duì)象是個(gè)殘疾皇子珊楼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • [TOC] GO通道和 sync 包的分享 我們一起回顧一下上次分享的內(nèi)容: GO協(xié)程同步若不做限制的話,會(huì)產(chǎn)生數(shù)...
    阿兵云原生閱讀 213評(píng)論 0 1
  • 本文會(huì)介紹 Go 語(yǔ)言的 Channel 的設(shè)計(jì)原理度液、設(shè)計(jì)結(jié)構(gòu)和常見(jiàn)操作厕宗,內(nèi)容全部來(lái)自 Go 語(yǔ)言設(shè)計(jì)與實(shí)現(xiàn)[ht...
    Sun東輝閱讀 566評(píng)論 3 0
  • CSP 要想理解 channel 要先知道 CSP 模型。CSP 是 Communicating Sequenti...
    _羊羽_閱讀 1,606評(píng)論 0 0
  • 單純地將函數(shù)并發(fā)執(zhí)行是沒(méi)有意義的堕担,函數(shù)與函數(shù)之間需要交換數(shù)據(jù)才能體現(xiàn)并發(fā)執(zhí)行函數(shù)的作用已慢。雖然可使用共享內(nèi)存進(jìn)行數(shù)據(jù)...
    JunChow520閱讀 424評(píng)論 0 2
  • 原文https://draveness.me/golang/docs/part3-runtime/ch06-con...
    文茶君閱讀 571評(píng)論 0 0