💻 sync.once详解 📝

导读 在Go语言中,`sync once` 是一个非常实用的同步结构,用于确保某个函数或代码块仅执行一次,无论有多少个 goroutine 同时尝试调用它。这

在Go语言中,`sync.once` 是一个非常实用的同步结构,用于确保某个函数或代码块仅执行一次,无论有多少个 goroutine 同时尝试调用它。这在初始化共享资源或单例模式中尤为重要。

💡 `sync.Once` 的核心是一个内部标志位,用来记录是否已经执行过目标函数。它的方法 `Do` 接受一个函数作为参数,并保证该函数只被执行一次。例如:

```go

var once sync.Once

once.Do(initFunc)

```

🎯 使用场景包括:

- 数据库连接池初始化。

- 配置文件加载。

- 单例对象创建。

与其他同步机制(如互斥锁)相比,`sync.Once` 更高效且更简洁,因为它只允许函数执行一次,避免了反复加锁解锁的开销。

🚀 示例代码:

```go

package main

import (

"fmt"

"sync"

)

func main() {

var once sync.Once

fmt.Println("First call...")

once.Do(func() {

fmt.Println("Initializing...")

})

fmt.Println("Second call...")

}

```

运行结果会显示 `"Initializing..."` 仅出现一次。🎉

总之,`sync.Once` 是 Go 并发编程中的利器,能有效提升程序性能和安全性!✨

版权声明:本文由用户上传,如有侵权请联系删除!