Go 语言圣经 9.5 sync.Once初始化

9.5 sync.Once初始化

知识点

  • 1.初始化延迟到需要的时候再去做就是一个比较好的选择–懒加载
  • 2.所有并发的问题都可以用一致的、简单的既定的模式来规避
  • 3.多个goroutine都需要访问的变量,使用互斥条件来访问

代码

  • 章节中的例子

//Icon用到了懒初始化(lazy initialization)
var icons map[string]image.Image
var loadIconsOnce sync.Once

func test_sync_Once()  {
    //待完善
}
func loadIcons() {
    icons = make(map[string]image.Image)
    //icons["spades.png"] = loadIcon("spades.png")
    //icons["hearts.png"] = loadIcon("hearts.png")
    //icons["diamonds.png"] = loadIcon("diamonds.png")
    //icons["clubs.png"] = loadIcon("clubs.png")
}
func Icon(name string) image.Image {
    loadIconsOnce.Do(loadIcons)
    return icons[name]
}

——不足之处,欢迎补充——

备注

《Go 语言圣经》

  • 学习记录所使用的GO版本是1.8
  • 学习记录所使用的编译器工具为GoLand
  • 学习记录所使用的系统环境为Mac os
  • 学习者有一定的C语言基础

代码仓库

猜你喜欢

转载自blog.csdn.net/liushihua147/article/details/81229691