栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

golang struct并发读写而没有锁定也可以运行吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

golang struct并发读写而没有锁定也可以运行吗?

从多个goroutine中至少其中一个是写操作的对任何变量的未同步并发访问是 未定义的行为
。不要尝试以未定义的行为查找逻辑,只需使用适当的同步即可。未定义意味着它可能会“正确”运行,也可能“不正确”运行(给出错误的结果),或者崩溃或发生其他任何情况。那就是未定义的意思。

concurrentStructWithMuLock()
居然没有数据的比赛,因为你使用的是互斥正确同步访问结构。

concurrentMap()
这是另一个问题。Go1.6向运行时添加了轻量级的并发滥用地图检测功能:

运行时增加了轻巧,尽力而为的检测并发滥用地图的功能。与往常一样,如果一个goroutine正在写入地图,则其他goroutine不应同时读取或写入地图。
如果运行时检测到这种情况,它将打印诊断并使程序崩溃。 找出更多有关该问题的最佳方法是在“
种族检测器”下运行该程序,这将更可靠地识别种族并提供更多详细信息。

因此,这是运行时的有意崩溃,因为它检测到对映射的非同步访问。这是Go运行时的“功能”,它会使您的应用程序崩溃,因为您的应用程序中不应保留任何数据竞争(以防止发生未定义的行为)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/426809.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号