go语言学习笔记:协程间同步

跟C语言没啥区别,都是用锁、读写锁。另外跟C语言一样有多协程间内存同步(内存屏障)问题。但是Go中直接用锁来解决。

var loadIconsOnce sync.Once
var icons map[string]image.Image
// Concurrency-safe.
func Icon(name string) image.Image {
    loadIconsOnce.Do(loadIcons)  //保证loadIcons执行过,切只执行一次。如果执行了一次,那么下面的操作肯定是安全的
    return icons[name]
}

 

posted @ 2017-12-14 22:03  你的KPI完成了吗  阅读(77)  评论(0)    收藏  举报