Golang sync.Once 简介与用法1.简介2.延迟初始化参考文献
sync.Once用来保证函数只执行一次。要达到这个效果,需要做到两点:(1)计数器,统计函数执行次数;(2)线程安全,保障在多 Go 程的情况下,函数仍然只执行一次,比如锁。m MutexOnce 结构体证明了之前的猜想,果然有两个变量。Do 方法相当简单,但也有可以学习的地方。比如一些标志位可以通过原子操作表示,避免加锁,提高性能。Do 方法实现过程如下:(1)首先通过原子load函数获取执行次数,如果已经执行过了则 return;(2)lock;(3)执行函数;......