go语言的sync.Once类型

sync.Once 是 Go 语言中的一个同步原语,它提供一种机制确保某个操作只执行一次。sync.Once 类型的变量可以用来保证一个函数只被执行一次,无论有多少个goroutine尝试调用它。

通过调用 sync.Once 类型变量的 Do 方法,并将要执行的函数作为参数传递给它,可以确保这个函数仅在第一次调用时执行,而后续的调用都将被忽略。

在这个例子中,通过创建一个 sync.Once 类型的变量 postOnce,您可以将某个函数绑定到这个变量,并且该函数只会在第一次调用 postOnce.Do() 时执行,后续的调用都会被忽略。这在需要确保某个操作只执行一次的场景中非常有用,比如只初始化一次全局变量、加载配置文件等操作。

var postOnce sync.Once
​
func myFunction() {
    fmt.Println("This function will only be executed once.")
}
​
func main() {
    for i := 0; i < 10; i++ {
        postOnce.Do(myFunction) // 只有第一次调用会执行myFunction函数
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_68798281/article/details/131953954