设计模式
单例¶
有时候需要确保在高并发的场景下有些事情只执行一次,比如加载配置文件、关闭管道等。
var oc sync.Once
var a int = 5
func main() {
go func() {
oc.Do(func() {
a++
})
}()
go func() {
oc.Do(func() {
a++
})
}()
time.Sleep(1 * time.Second)
fmt.Println(a) //6
}