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

go map结构是线程安全的吗?

go map结构是线程安全的吗?

Go
守着星空守着你 2021-04-15 14:11:27
Go map类型的线程安全吗?我有一个程序,其中有许多goroutine可以读写地图类型。如果我需要实施保护机制,什么是最好的方法?
查看完整描述

2 回答

?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

您需要使用goroutines并通过channel同步对地图的访问。常见问题解答中的说明:

经过长时间的讨论,人们决定使用地图的典型用法不需要从多个线程进行安全访问,并且在这种情况下,地图可能是某些已经同步的较大数据结构或计算的一部分。因此,要求所有映射操作都获取互斥量将减慢大多数程序的速度,并增加少数程序的安全性。但是,这并不是一个容易的决定,因为这意味着不受控制的地图访问可能会使程序崩溃。

该语言不排除原子图更新。在需要时(例如在托管不受信任的程序时),实现可以互锁地图访问。


查看完整回答
反对 回复 2021-04-26
?
阿晨1998

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

1.9开始,最好的方法是使用sync.Map类型。


查看完整回答
反对 回复 2021-04-26
  • 2 回答
  • 0 关注
  • 330 浏览
慕课专栏
更多

添加回答

举报

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