golang技术笔记之channel(信道)

信道是什么?

简单说,是goroutine之间互相通讯的东西。用来goroutine之间发消息和接收消息。

执行:

go goTest()
方法不会触发,因为还没到该方法时,主函数已经退出了。
需要一个类似join的东西来阻塞住主线。

创建信道:

使用make来建立一个信道。

var channel chan int = make(chan int)

channel := make(chan int)

例子:

var complete chan int = make(chan int)
func loop() {
for i := 0; i < 10; i++ {
fmt.Printf("%d ", i)
}
complete <- 0 // 执行完毕了,发个消息
}

func main() {
go loop()
<- complete // 直到线程跑完, 取到消息. main在此阻塞住
}

缓冲信道:并行的;

非缓冲信道:串行的;

你可能感兴趣的:(golang技术笔记之channel(信道))