Go sync Once 解释使用方法

3 min read

sync.Once 可以确保一个函数只会执行一次。一旦某个函数被调用,就会标记一个标志位,下一次再调用该函数就会直接返回而不是执行函数体。

once.Do() 接收一个函数的参数,函数只会被调用一次,以后再次调用该函数时,Do()将直接返回。

具体使用方法如下:

  1. 定义一个 sync.Once 对象

  2. 定义一个函数 f

  3. 调用 once.Do(f)

示例代码:

var once sync.Once



func setup() {

  fmt.Println("Performing setup...")

}



func main() {

  once.Do(setup)

  once.Do(setup)

}

结果:

Performing setup...

解释:

第一次调用 Do 方法时,setup 函数被执行了;第二次调用 Do 方法时,setup 函数并没有被执行。这就是 sync.Once 的作用。