golang channel是什么

互联网 19-12-3

Go语言中的channel是实现goroutine间无锁通信的关键机制,他使得写多线程并发程序变得简单、灵活、触手可得。

Channel是Go中的一个核心类型,你可以把它看成一个管道,通过它并发核心单元就可以发送或者接收数据进行通讯(communication)。 (推荐学习:go)

它的操作符是箭头 <- 。

ch <- v    // 发送值v到Channel ch中 v := <-ch  // 从Channel ch中接收数据,并将数据赋值给v

channel结构

type hchan struct {    qcount   uint           // total data in the queue 队列中存在的个数    dataqsiz uint           // size of the circular queue buffer大小 实现看起来是个循环数组    buf      unsafe.Pointer // points to an array of dataqsiz elements 数组指针    elemsize uint16       //channel类型的大小    closed   uint32      //channel是否关闭    elemtype *_type // element type //channel 类型    sendx    uint   // send index  //发送index    recvx    uint   // receive index //接收index    recvq    waitq  // list of recv waiters //接收链表 即读channel的goroutine    sendq    waitq  // list of send waiters //发送链表 即写channel的goroutine     // lock protects all fields in hchan, as well as several    // fields in sudogs blocked on this channel.    //    // Do not change another G's status while holding this lock    // (in particular, do not ready a G), as this can deadlock    // with stack shrinking.    lock mutex }

以上就是golang channel是什么的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: golang
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:Golang Cgo是什么

相关资讯