go

golang chan的用法

实验目的 chan相关前置知识点,请参考本文底部链接。墙裂推荐阅读。 假设系统内除了主线程之外,有四个线程connector,sender,receiver,heartbeat connector,负责建立网络连接,在连接断开的时候进行重连 sender,负责发送数据报 receiver,负责接收数据报 heartbeat,负责监控心跳 如何启动connector connector需要等待ConnectorNotifier,值为1连接,值为2重连 建立连接之后,发送三次ConnectorConnected,通知sender, sender,receiver可以开工 var ConnectorConnected chan int = make(chan int, 3) // 已连接通知 func connector(){ ..... // 成功之后发送三次通告 ConnectorConnectedNotifier <- 1 ConnectorConnectedNotifier <- 1 ConnectorConnectedNotifier <- 1 } 如何启动sender, receiver,以及heartbeat 等待ConnectorConnectedNotifier,收到...

go语言数组内存是怎么扩容的

话不多说,上测试代码和结果 package main import ( "fmt" ) func main() { var orderIds []int fmt.Println(len(orderIds), cap(orderIds)) fmt.Println("已使用", "\t\t", "容量", "\t\t", "增量") var lastCap = cap(orderIds) for i := 0; i < 100000; i++ { orderIds = append(orderIds, 1) if cap(orderIds) != lastCap{ fmt.Println(len(orderIds), "\t\t", cap(orderIds), "\t\t", cap(orderIds)-lastCap) lastCap = cap(orderIds) } } } 输出 0 0 已使用 容量 增量 1 2 2 3 4 2 5 8 4 9 16 8 ...