同步原语到底同步了什么:Go 为什么要用 happens-before 解释 channel 和 Mutex
代码评审里经常出现这种争论:一个 goroutine 写完结果,close(done);另一个 goroutine 等 <-done 再读结果。有人看着觉得多此一举:这不就是通知一下吗?换成一个 bool,或者 sleep 一小会儿, …
代码评审里经常出现这种争论:一个 goroutine 写完结果,close(done);另一个 goroutine 等 <-done 再读结果。有人看着觉得多此一举:这不就是通知一下吗?换成一个 bool,或者 sleep 一小会儿, …
线上最烦的并发 bug,往往不是崩得轰轰烈烈,而是偶尔读到一个不该出现的旧值。
配置已经加载了,日志也打了“ready”,另一个 goroutine 却像没看见一样,读到的还是旧数据。你盯着代码看半天,越看越觉得冤:明明是先写数据,再把 …
线上偶现一个很烦的 bug:配置已经加载了,日志也打印了“ready”,但另一个 goroutine 读到的还是旧值。
代码看起来没什么毛病:先写数据,再把 ready 置成 true。读的一侧先等 ready,再读数据。人脑看这段逻辑,很 …