Golang sync模块
- sync.map类型是在Go1.9加入的,实现的是一个线程安全的map,它和map在使用上有着多方面的不同
- 首先是定义上不需要使用make来创建内存资源,而是直接定义后使用如:var syncMap sync.Map
- syncMap.Load(key)(value,ok),Load是sync.Map中获取Value的方法,在sync.Map中key,value都是interface{}
- syncMap.Store(key,value)存
- syncMap.Range(f func(key, value interface{}) bool)用于遍历sync.Map对象如:
f := func(k, v interface{ }) bool { log.Println(k, v) return true } syncMap.Range(f) }
- sync.Delete(key)删除
- sync.WaitGroup是协程控制中比较方便的一个,相当于一个监视器;当主程序中检测到计数器为为0时则结束,它包含三个方法:
- Add()方法用于设定初始的协程数,或者说监听的协程数
- Done()方法将计数器减一,Done与Add()应当是对应的,过多导致计数器为负直接炸,过少则所有协程结束时检测到还在wait也炸
- Wait()一般是主程序等待,当Done完所有的协程则Wai