golang的map读写都在一个函数里面完成如何加锁啊?

发布于 2022-09-11 19:02:06 字数 368 浏览 19 评论 0

这段代码我看懂了

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

一袭白衣梦中忆 2022-09-18 19:02:06

写锁的等级比读锁高的.

你只要先执行
d.Lock.Lock()

然后进行读操作和写操作

最后d.Lock.UnLock() 就可以了。

め七分饶幸 2022-09-18 19:02:06

该 Demo 结构里的 Set 和 GET 操作都已经加了锁的,你在使用 demo.Get() 和 demo.Set() 的时候不需要再加锁了。 (假设 demo 是 Demo 的有给实例)

琉璃梦幻 2022-09-18 19:02:06

可以参考一下gmap这个包:https://goframe.org/container...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文