首页 > 行业资讯 > 互联数码科普 >

💻 sync.once详解 📝

发布时间:2025-03-23 19:42:14来源:

在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 并发编程中的利器,能有效提升程序性能和安全性!✨

免责声明:本答案或内容为用户上传,不代表本网观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。 如遇侵权请及时联系本站删除。