golang的map读写都在一个函数里面完成如何加锁啊?
这段代码我看懂了
type Demo struct {
Data map[string]string
Lock sync.RwMutex
}
func (d Demo) Get(k string) string{
d.Lock.RLock()
defer d.Lock.RUnlock()
return d.Data[k]
}
func (d Demo) Set(k,v string) {
d.Lock.Lock()
defer d.Lock.UnLock()
d.Data[k]=v
}
现在我的读写都在一个函数里面完成,先获取,如果存在直接取出来,如果不存在,计算后赋值,下次再取就直接取了
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
写锁的等级比读锁高的.
你只要先执行
d.Lock.Lock()
然后进行读操作和写操作
最后
d.Lock.UnLock()
就可以了。该 Demo 结构里的 Set 和 GET 操作都已经加了锁的,你在使用 demo.Get() 和 demo.Set() 的时候不需要再加锁了。 (假设 demo 是 Demo 的有给实例)
可以参考一下
gmap
这个包:https://goframe.org/container...