我正在用 golang 编写 DNS 协议解析器,想法是使用这样的映射
var tidMap map[uint16] (chan []byte)
所以对于tidMap
地图来说,key 是 tid(事务 ID),value 是一个字节数组通道。
这个想法是一个 goroutine 将尝试从通道获取值,另一个 goroutine 将尝试通过侦听每个传入的数据包来读取字节,一旦找到事务 ID,就会将响应数据设置到 tidMap,因此前一个 goroutine 将继续处理响应。
设计的一个问题是我需要确保通道的缓冲区长度为 1,因此可以将额外的值推送到通道中而不会阻塞。
那么如何在tidMap
声明中指定通道缓冲区长度呢?
var tidMap map[int] make(chan int, 1)
你不能make()
在那里使用。
白衣非少年
慕村9548890
相关分类