当前位置: 首页 > 面试题库 >

Go中的地图不具有线程安全性意味着什么?

谢和同
2023-03-14
问题内容

我想确切地知道当多个goroutins访问go地图时,假设我们有一个map[int]*User。多个goroutins修改User结构的字段会导致数据损坏吗?还是像len()非线程安全这样的操作,如果map在Go中是线程安全的,那会有什么不同?


问题答案:

同时修改*User可能会导致损坏,
无关map。只要不对映射进行任何修改,从映射中并发读取指针是安全的。修改数据*User点以不更改地图本身。

同时修改map[int]*User本身也会冒数据损坏的风险。

没有良性数据竞争,请始终使用竞争检测器测试您的代码。



 类似资料:
  • 问题内容: 在Eclipse中使用断点时,我有时会注意到它们具有不同的图标/注释(左侧边栏上的标记)。有时它只是一个蓝色的球,有时上面有一个选中标记,有时它已经被划掉。所有这些注释是什么意思? 问题答案: 蓝色球:常规断点,处于活动状态(可能具有命中计数设置) 空球(即白色):断点已禁用(在断点视图或上下文菜单中删除复选标记) 通过断点的对角线:已禁用所有断点(断点视图中的按钮) 断点旁的问号:此

  • 我想创建一个

  • 问题内容: 我正在学习python,但不确定是否理解以下语句:“该函数(包括其名称)可以捕获 我们对问题的看法或抽象 。” 这是我不理解编程含义的粗体部分。引用来自http://www.openbookproject.net/thinkcs/python/english3e/functions.html 像计算机科学家一样思考,第3版。 谢谢 ! 问题答案: 抽象是所有计算机科学中的核心概念。没有

  • 我正在学习python,我不确定是否理解以下语句:“函数(包括它的名字)可以捕捉我们对问题的心理组块或抽象。” 我不理解粗体部分在编程方面的含义。引用自http://www.openbookproject.net/thinkcs/python/english3e/functions.html 如何像计算机科学家一样思考,第3版。 谢谢你!

  • 问题内容: 在闭括号前/,Python 3.4的help输出是什么意思range? 问题答案: 它象征着结束位置唯一参数,参数,你不能作为关键字参数使用。这些参数只能在C API中指定。 这意味着keyto 的参数只能通过传递,而不能作为关键字参数传递,这可以通过pure-python函数中的position参数来完成。 另请参阅Argument Clinic文档: 要将所有参数标记为中的“仅位置

  • 问题内容: 使用或不使用变量访问变量之间有什么区别? 问题答案: 所述使它成为 用户定义 会话 变量。否则它将是 本地范围的 变量(在存储过程中),您必须先在本地使用它。如果需要,还可以设置 全局 系统 变量(使用或)。以及带有或或的会话 系统 变量。 有关详细信息,从文档:如果没有修饰符,改变会话变量(这就是为什么你在存储过程中的第一个当地人)。如果设置了多个系统变量,则该语句中的最新变量或修饰