






















4 supuwoerc 1 月 8 日存在 data race ,你想要双重检查标识位,但是第一次检查没在加锁之后,是存在潜在问题的。 问题出现在 done uint32 的读写并不是原子的,你需要换成原子读写,你这段代码和 sync.Once 的区别就是这里。 ``` o.m.Lock() fmt.Println("bing: ", o.done) if atomic.LoadUint32(&o.done) == 0 { |
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。