golang 中map并发读写操作

允我心安 提交于 2019-12-04 23:58:44

go中map并发使用是不安全的,当你使用goroutine同时对一个map进行读写操作时,不确定会发生什么(由于读写执行顺序不确定造成的).针对这种情况,我们要添加读写锁对sync.RWMutex其进行同步.

var counter = struct{
    sync.RWMutex
    m map[string]int
}{m: make(map[string]int)}

从counter读取数据,使用读锁

counter.RLock()
n := counter.m["some_key"]
counter.RUnlock()
fmt.Println("some_key:", n)

向counter写数据,使用写锁

counter.Lock()
counter.m["some_key"]++
counter.Unlock()

参考:http://blog.golang.org/go-maps-in-action

转载于:https://www.cnblogs.com/msnsj/p/4242583.html

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!