Go语言中channel的基础知识

channel

goroutine运行在相同的地址空间,因此访问共享内存必须做好同步。goroutine奉行通过通信来共享内存,而不是共享内存来通信。

公司主营业务:网站建设、网站设计、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。成都创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。成都创新互联推出南通免费做网站回馈大家。

 

引⽤类型 channel 是CSP模式的具体实现,用于多个goroutine通讯。其内部实现了同步,确保并发安全。

 channel类型

和map类似,channel也一个对应make创建的底层数据结构的引用。

 

当我们复制一个channel或用于函数参数传递时,我们只是拷贝了一个channel引用,因此调用者何被调用者将引用同一个channel对象。和其它的引用类型一样,channel的零值也是nil。

 

定义一个channel时,也需要定义发送到channel的值的类型。channel可以使用内置的make()函数来创建:

    make(chan Type) //等价于make(chan Type, 0)

    make(chan Type, capacity)

 

当capacity= 0 时,channel是无缓冲阻塞读写的,当capacity> 0 时,channel有缓冲、是非阻塞的,直到写满capacity个元素才阻塞写入。

 

channel通过操作符<-来接收和发送数据,发送和接收数据语法:

    channel <- value      //发送value到channel

    <-channel             //接收并将其丢弃

    x := <-channel        //从channel中接收数据,并赋值给x

    x, ok := <-channel    //功能同上,同时检查通道是否已关闭或者是否为空

 

默认情况下,channel接收和发送数据都是阻塞的,除非另一端已经准备好,这样就使得goroutine同步变的更加的简单,而不需要显式的lock。

新闻名称:Go语言中channel的基础知识
网页地址:https://www.cdcxhl.com/article22/pdshjc.html

成都网站建设公司_创新互联,为您提供软件开发定制网站网站收录网页设计公司全网营销推广定制开发

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

小程序开发