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函数
}
}