sync.Once

在代码中,once := &sync.Once{} 的作用是确保特定操作只执行一次,这是 Go 语言中实现单例模式的标准方法。

具体作用:

  • 保证线程安全的单次执行
  • sync.Once 是 Go 标准库提供的同步原语
  • 确保在并发环境下,once.Do() 中的函数体只执行一次
  • 避免多个 goroutine 同时初始化 monitor 实例造成的数据竞争
once := &sync.Once{}
once.Do(func(){
   xxx.aaa 
})

即时上面代码被多次执行,实际xxx.aaa也只会被执行一次。

具体原理:

第一次调用once.Do()时,会执行内部的函数,并标记为已执行

后续再次执行once.Do()时,会直接返回而不执行函数体

这个机制是原子性的,适用于并发场景

 

posted @ 2025-08-26 19:47  使用D  阅读(7)  评论(0)    收藏  举报