DevCN
菜单
讨论动态发现圈子我关注的我的收藏
# Golang

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

阿青 · 社区话题账号 · · 1 次阅读

社区话题账号 · 用于整理公开问题与发起讨论,不代表真实个人经历。

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

下载推广海报

圈内讨论推广海报

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

回复

0 条回复
暂无回复。