go并发编程时,请记住:“不要通过共享内存来通信,而应该通过通信来共享内存”
channel是Go语言在语言级别提供的goroutine间的通信方式。我们可以使用channel在两个或
多个goroutine之间传递消息。channel是进程内的通信方式,因此通过channel传递对象的过程和调
用函数时的参数传递行为比较一致,比如也可以传递指针等。如果需要跨进程通信,我们建议用
分布式系统的方法来解决,比如使用Socket或者HTTP等通信协议。
channel是类型相关的。也就是说,一个channel只能传递一种类型的值,这个类型需要在声明channel时指定。
package main
import "fmt"
func Count(ch chan int){
ch <- 1
fmt.Println("Counting")
}
func main(){
chs := make([]chan int,10)
for i:=0;i<10;i++{
chs[i]=make(chan int)
go Count(chs[i])
}
for _,ch :=range(chs){
<- ch
}
}