ready=true 不是发布:Go 内存模型真正要你保证什么
线上偶现一个很烦的 bug:配置已经加载了,日志也打印了“ready”,但另一个 goroutine 读到的还是旧值。
代码看起来没什么毛病:先写数据,再把 ready 置成 true。读的一侧先等 ready,再读数据。人脑看这段逻辑,很 …
线上偶现一个很烦的 bug:配置已经加载了,日志也打印了“ready”,但另一个 goroutine 读到的还是旧值。
代码看起来没什么毛病:先写数据,再把 ready 置成 true。读的一侧先等 ready,再读数据。人脑看这段逻辑,很 …
goroutine 数量从 200 慢慢涨到 2 万。
监控图上那条线,不陡,但一直在爬。就像水龙头没拧紧——不喷,但也不会停。
你的第一反应是什么?
加大 buffer。
make(chan int, 100) 改成 make(chan …
有人为了写得“更 Go”,把一个简单 cache 包成了 channel 协议。
每次 Get,先构造 request,发给 owner goroutine,再等 response channel 返回。还要处理 …
goroutine dump 里满屏 chan send,你知道它卡住了。
但它到底卡在哪里?
是缓冲区满了?没有 receiver?被 select 挂进了等待队列?还是 channel 被 close 之后才醒过来,然后 panic? …