go并发通信

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
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容