我正在尝试在 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 回答
![?](http://img1.sycdn.imooc.com/54585094000184e602200220-100-100.jpg)
墨色风雨
TA贡献1853条经验 获得超6个赞
对于所有评论者都认为这是一个人为的例子:否则你如何简洁地演示同时访问Go中的地图?鉴于其教育背景,这是一个完全有效的问题,并且很好地展示了所讨论的问题。
现在,回答:是的,这似乎是将互斥体与地图一起使用的完美方式。我更喜欢随机等待,以便更准确地模拟现实生活,但这对我来说似乎是合理的。
- 1 回答
- 0 关注
- 96 浏览
添加回答
举报
0/150
提交
取消