教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 golang的map为什么不设计成同步(安全)的

golang的map为什么不设计成同步(安全)的

发布时间:2022-01-21   编辑:jiaochengji.com
教程集为您提供golang的map为什么不设计成同步(安全)的等资源,欢迎您收藏本站,我们将为您提供最新的golang的map为什么不设计成同步(安全)的资源
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"/></svg>

map可能是其他比较大的数据结构或者算法的一部分,而这些数据结构或者算法可能已经是同步的了。这种情况下如果map本身也保证同步的话,就需要每个map本身都维护一个锁,毫无疑问这样会在同步方面多此一举的同时拖累程序。

<blockquote>

需要注意的是,正因为map采取了这样的设计,所以在用map的时候一定注意,如果异步做修改操作会导致程序崩溃。(异步读数据没问题)

</blockquote>

另外,有时候线程安全的map还是需要的,除了自己加锁之外,可以用<code>sync.Map</code>,具体用法源码及其注释已经介绍的很清楚了。对其实现感兴趣的可以看下它的<code>Store</code>方法的实现,主要是用到了<code>atomic</code>包里的load跟swap等操作以及<code>sync</code>包下的<code>Mutex</code>

到此这篇关于“golang的map为什么不设计成同步(安全)的”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
golang的map为什么不设计成同步(安全)的
golang 并发访问map遇到的问题
golang:map
Golang的map并发安全
Golang map线程安全实现及sync.map使用及原理解析。
golang中map的一些注意事项
由浅入深聊聊Golang的map
golang map 详解
深度解密Go语言之 map
如何在golang中关闭bufio.reader_golang 并发编程

[关闭]
~ ~