go线程安全问题

weixin_38058748 2019-09-20 10:43:06
我们知道当创建大量goroutine,goroutine中任务是对同一个map进行读写时,程序会崩溃,无法执行,也就是map线程不安全。但如果设置逻辑处理器为1的话,还会有这样问题吗?
...全文
50 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38064966 2019-09-20
  • 打赏
  • 举报
回复
会有问题的,map 的读写过程不是原子性的。单核并不能保证。
weixin_38069045 2019-09-20
  • 打赏
  • 举报
回复
这是go语言实战里的图,G*代表协程,我在想,如果就一个线程的话,G*之间永远不会同一时间被调度,那还用锁干什么?
weixin_38076910 2019-09-20
  • 打赏
  • 举报
回复
goroutine 并不是挨个执行完的,之间会有调度,可能会在执行期间被打断,就可能造成多个goroutine访问 map这个共享变量,所以会造成并发写的panic吧。
weixin_38085383 2019-09-20
  • 打赏
  • 举报
回复
正解!
weixin_38103419 2019-09-20
  • 打赏
  • 举报
回复
建议你搜索学习一下Atomicity

433

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧