fatal error: concurrent map iteration and map write

clipboard.png

如上图,如果没有增加红框内的代码,运行起来没有问题;
加了红框的代码后,不停刷新页面请求时,偶尔会出现报错另程序强制停止(一般快速刷新5,6遍就panic停止了)

报错代码:fatal error: concurrent map iteration and map write

在网上查说是由于多个goroutine并发读写map导致的,但是我代码里并没有开过个goroutine,还是没明白出错的原因,请问一下报错的原因及解决方法,谢谢

阅读 12.7k
4 个回答

如果是web项目,框架会自动给你开多个协程
建议给这个map加个锁

在使用golang进行开发中,数据并发安全是经常要考虑到的因素,开发框架中并不会处理用户数据的并发安全。从1.9.2版本开始golang也提供了sync.Map并发安全的封装类型,此外也可以参考gf框架的并发安全容器:http://gf.johng.cn/494392

多个请求不就是多个goroutine吗. 加锁或使用 @John 提到的sync.Map.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题