sync包once小问题

goCurrent · · 2824 次点击
感谢解答,其实道理我能理解,但是就代码论代码,如果 sync.Once 写成如下这样,会有线程安全问题吗?如果有,会哪些地方有线程安全问题。 ```go type Once struct { done uint32 m Mutex } func (o *Once) Do(f func()) { if o.done == 0 { o.doSlow(f) } } func (o *Once) doSlow(f func()) { o.m.Lock() defer o.m.Unlock() if o.done == 0 { defer o.done = 1 f() } } ```
#14
更多评论
<a href="/user/kingJ" title="@kingJ">@kingJ</a> 线程安全是指啥,两个goroutine同时读一个int应该不会panic
#2