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在此阻塞住
}

缓冲信道:并行的;

非缓冲信道:串行的;

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容