最近发布的主题
暂无
最近发布的文章
暂无
最近分享的资源
暂无
最近发布的项目
暂无
最近的评论
-
评论了主题 sync包once小问题如果是多goroutine 情况下, o.done 和 atomic.LoadUint32(&o.done) 区别: 1、o.done的读取在执行上可能需要好几次 cpu 指令操作,这几次 cpu 指令执行中,可能有别的 goroutine 在修改这个 done 的值,导致你读取到的可能是一个不确定的值 2、用 atomic 这种原子操作,cpu 指令在执行中会保证别的goroutine不去修改这个值,所以读取到的是一个确定的值; 建议看一下 go 的内存模型: https://go.dev/ref/mem