Skip to content

设计模式

单例

有时候需要确保在高并发的场景下有些事情只执行一次,比如加载配置文件、关闭管道等。

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
}