2-4.sync.Once的实现
Go 语言标准库中 sync.Once
可以保证在 Go 程序运行期间的某段代码只会执行一次。
其原理也很简单:用一个数字表示是否执行过 + 锁保证并发场景下只执行一次。后续再次执行时,检查该变量即可。
在使用该结构体时,我们也需要注意以下的问题:
sync.Once.Do
方法中传入的函数只会被执行一次,哪怕函数中发生了panic
两次调用
sync.Once.Do
方法传入不同的函数只会执行第一次调传入的函数
Last updated
Go 语言标准库中 sync.Once
可以保证在 Go 程序运行期间的某段代码只会执行一次。
其原理也很简单:用一个数字表示是否执行过 + 锁保证并发场景下只执行一次。后续再次执行时,检查该变量即可。
在使用该结构体时,我们也需要注意以下的问题:
sync.Once.Do
方法中传入的函数只会被执行一次,哪怕函数中发生了 panic
两次调用 sync.Once.Do
方法传入不同的函数只会执行第一次调传入的函数
Last updated