前言
从架构上来讲,降低共享内存的使用,本来就是解耦和的重要手段之一。既然能来到次,那大家应该都是goer,都应该听过go社区经典的一句话“不要通过共享内存来通信,而应该通过通信来共享内存”,于是channel就浮现在我们面前,现在通过一个简单的案例,来学习一下channel在go并发编程中的使用
案例
package main
import (
"fmt"
)
func main() {
ch := make(chan int ,100)
extCh := make(chan bool)
go WriteData(ch)
go ReadData(ch ,extCh)
<-extCh
fmt.Println("end")
}
func WriteData(ch chan int) {
for i := 0; i < 100; i++ {
ch <- i
//time.Sleep(time.Second)
}
close(ch)
}
func ReadData(ch chan int,extCh chan bool) {
for {
v,ok:=<-ch
if !ok{
break
}
fmt.Printf("读到的值为:%v \n",v)
}
extCh<-true
close(extCh)
}
相信通过案例,可以很好的掌握channel。