Go中運用chan的簡單案例

開發環境:windows7 64位、編輯器:sublime text3 windows

簡要說明:Go中能夠建立有緩衝的chan(好比:  c1:=make(chan int,4)就是緩衝區大小爲4的chan了 ),也能夠建立沒有緩衝的chan(好比: c2:=make(chan int)就是沒有緩衝的chan)。 併發

代碼以下,代碼中有註釋: 編輯器

package main


import (
"fmt"
)


func main() {
c := make(chan int, 2) //建立帶有緩衝的chanel,緩衝大小是2


//這樣調用函數,那麼f1和f2就是併發執行了
go f1(c) //將參數c傳遞給f1()
go f2(c) //將參數c傳遞給f2()


c1 := <-c
c2 := <-c //main函數只有從c中接收到倆個值,纔會退出main(),不然main()中會阻塞這那直到c中有數據能夠接收
fmt.Printf("c1:%d   c2:%d", c1, c2)
}


func f1(c chan int) { // chan int 表示參數的類型是存儲int類型的chanel
c <- 1 //向這個chanel中傳入1,以後main()中就會接受到1
}


func f2(c chan int) { // chan int 表示參數的類型是存儲int類型的chanel
c <- 2 //向這個chanel中傳入2,以後main()中就會接收到2
}
函數


運行結果如圖所示(結果顯示c1的值是2而不是1,c2的值是1而不是2): 開發

相關文章
相關標籤/搜索