singleton in go
作者:
将军红 | 来源:发表于
2019-12-19 16:56 被阅读0次package disign
import "sync"
type singleton struct {}
var instance *singleton
// 1.单例模式
func NewSingleton() *singleton {
if instance == nil {
instance = &singleton{}
}
return instance
}//高并发下,会有多个instance生成 【❎】
//2.单例模式
var l sync.Locker
func NewSingleton2() *singleton {
l.Lock() // lock
defer l.Unlock()
if instance == nil { // check
instance = &singleton{}
}
return instance
} //同一时刻只有一个线程能拿到锁,其他的全部阻塞等待。【❎】
//单例模式 合适写法 【✔️】
var once sync.Once
func NewSingleton3() *singleton {
once.Do(func() {
instance = &singleton{}
})
return instance
}
本文标题:singleton in go
本文链接:https://www.haomeiwen.com/subject/edfvnctx.html
网友评论