加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

golang 中map并发读写操作

发布时间:2020-12-16 19:25:47 所属栏目:大数据 来源:网络整理
导读:go中map并发使用是不安全的,当你使用goroutine同时对一个map进行读写操作时,不确定会发生什么(由于读写执行顺序不确定造成的).针对这种情况,我们要添加读写锁对 sync.RWMutex 其进行同步. var counter = struct{ sync.RWMutex m map[string]int}{m: m

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读