go专家编程--数据结构chan

chan结构

type hchan struct {
		qcount			uint            // 队列中剩余元素大小
		dataqsiz		uint            // 队列大小
		buf			      unsafe.Pointer        // 环形队列指针
		elemsize          uint16                    // 元素大小
		elemtype          *_type                   // 元素类型
		sendx              uint                       // 队列下标,写入队列位置
		recvx               unit                      // 队列下标,读队列位置
		sendq              waitq                   // 等待写消息的goroutine队列
		recvq               waitq                   // 等待读消息的goroutine队列
		close               uint32                 // 关闭标示
		mux                mutex.                 // 锁


} 

  • 环形队列
  • 等待队列(写会唤起读,读会唤起写)
  • 类型信息

chan读写

主要关注是不是缓存,是不是qcount等?

chan用法

  • 单向
  • select
    select
    {
    case e:= <- chan1:
    ...
    case e:= <- chan1:
    ...
    default:
    ...
    }
  • range
    for e:= range elemRange
posted @ 2022-11-26 17:38  富0代  阅读(56)  评论(0)    收藏  举报
返回
顶部