为了账号安全,请及时绑定邮箱和手机立即绑定

同时添加和读取具有通道的地图

同时添加和读取具有通道的地图

Go
幕布斯7119047 2022-08-09 20:24:30
我正在尝试在 Go 中实现并发安全映射。我已经使用下面的互斥体完成了它。首先,这是使用互斥锁的好方法吗?或者我应该以不同的方式使用同步包?其次,我怎么能做同样的事情,而不是使用通道呢?func main(){    var wg sync.WaitGroup        m := make(map[int]int)    var mu sync.Mutex    wg.Add(1)    wg.Add(1)    go func(){        defer wg.Done()        mu.Lock()        m[1] = 1        mu.Unlock()    }()    go func(){        defer wg.Done()        defer mu.Unlock()        for {            time.Sleep(1 * time.Second)            mu.Lock()            if a, ok := m[1]; ok {                fmt.Println(a)                break            }        }    }()    wg.Wait()}
查看完整描述

1 回答

?
墨色风雨

TA贡献1853条经验 获得超6个赞

对于所有评论者都认为这是一个人为的例子:否则你如何简洁地演示同时访问Go中的地图?鉴于其教育背景,这是一个完全有效的问题,并且很好地展示了所讨论的问题。

现在,回答:是的,这似乎是将互斥体与地图一起使用的完美方式。我更喜欢随机等待,以便更准确地模拟现实生活,但这对我来说似乎是合理的。


查看完整回答
反对 回复 2022-08-09
  • 1 回答
  • 0 关注
  • 96 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信