源码疑惑---求解,这两种写法有什么不同吗?

martin_yyds · 2022-09-27 10:47:55 · 2306 次点击

没啥不同 写法爱好

#2
更多评论
jan-bar
想要拥有,必定付出。

defer再怎么也得有一定开销吧,而且是在return之后才执行defer

我看最新版也用了defer

func (c *cancelCtx) Done() <-chan struct{} {
    d := c.done.Load()
    if d != nil {
        return d.(chan struct{})
    }
    c.mu.Lock()
    defer c.mu.Unlock()
    d = c.done.Load()
    if d == nil {
        d = make(chan struct{})
        c.done.Store(d)
    }
    return d.(chan struct{})
}
#1