golang 1.8 并发安全Map简单实现

我怕爱的太早我们不能终老 提交于 2019-12-05 00:11:21
type SafeMap struct {
    sync.RWMutex
    Map map[int64]string
}

func NewSafeMap(size int) *SafeMap {
    sm := new(SafeMap)
    sm.Map = make(map[int64]string, size)
    return sm
}

func (sm *SafeMap) ReadMap(key int64) string {
    sm.RLock()
    value := sm.Map[key]
    sm.RUnlock()
    return value
}

func (sm *SafeMap) WriteMap(key int64, value string) {
    sm.Lock()
    sm.Map[key] = value
    sm.Unlock()
}

// 用于for k,_ := range m.Keys(){v := m.ReadMap(k) ....}
func (sm *SafeMap) Keys() []int64 {
    sm.RLock()
    value := make([]int64, 0)
    for k, _ := range sm.Map {
        value = append(value, k)
    }
    sm.RUnlock()
    return value
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!