美文网首页
go并发通信

go并发通信

作者: 夜空中乄最亮的星 | 来源:发表于2018-02-09 12:19 被阅读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
        }
    }
    

    相关文章

      网友评论

          本文标题:go并发通信

          本文链接:https://www.haomeiwen.com/subject/evrftftx.html