RSS
菜单

Go sync.Once 怎么用?并发安全的单例初始化实现

sync.Once 保证某个函数只执行一次(并发安全),用于单例初始化、懒加载配置、只注册一次的全局操作:var once sync.Once; once.Do(func() { initSomething() })。即使多个 goroutine 同时调用 Do,函数也只执行一次,其他 goroutine 等待完成。内部实现:原子标志 + Mutex + 双重检查。注意:Once 不可复制;Do 内函数 panic 后 once 状态仍标记完成(函数不会重试),Do 内尽量避免 panic。

下载推广海报

圈内讨论推广海报

《Go sync.Once 怎么用?并发安全的单例初始化实现》完整推广海报
一起交流

全部回复 0

分享经验,让问题更进一步

讨论,从你的观点开始

还没有回复,欢迎补充经验或分享不同的思路。