go并发通信

2018-02-09  本文已影响0人  夜空中乄最亮的星

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
    }
}
上一篇 下一篇

猜你喜欢

热点阅读