信道是什么?
简单说,是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在此阻塞住
}
网友评论