摘要:
协程栈 go 栈的位置 1. Go 协程栈位于 Go-堆内存上 2. Go 堆内存位于操作系统虚拟内存上 go 栈的工作流程 以main.main为出发点 要记录runtime.main的栈基地址 记录 a 和 b的局部变量值 开辟一个空间记录 sum函数的返回值 记录 b 和 a的值, 这里是为了 阅读全文
摘要:
atomic和sema是实现go中锁的基础,简单看下他们的实现原理。 atomic atomic 常用来作为保证原子性的操作。 当多个协程,同时一个数据进行操作时候,如果不加锁,最终的很难得到想要的结果。 var p int64 = 0 func add() { p = p + 1 } func m 阅读全文