请教一下关于Go内存模型的问题

zzha · · 1305 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

#### 请教各位大佬一个关于Go内存模型的问题 最近在学习Go的内存模型,出现了一点问题。 就是内存模型的mcentral结构中,学习的资料上都说mcache向mcentral申请内存需要加锁,但是我现在的版本(Go1.17.8)的runtime.mcentral.go中,代码如下: ```go //go:notinheap type mcentral struct { spanclass spanClass partial [2]spanSet // list of spans with a free object full [2]spanSet // list of spans with no free objects } type spanSet struct { spineLock mutex spine unsafe.Pointer // *[N]*spanSetBlock, accessed atomically spineLen uintptr // Spine array length, accessed atomically spineCap uintptr // Spine array cap, accessed under lock index headTailIndex } ``` 里面并没有加锁,而且有查到说go1.15之后mcache向mcentral申请内存就不需要加锁了,目前有点混乱。 问题如下: 1. 最新版本的mcache向mcentral申请内存需要加锁吗?如果不用,又是通过什么方式代替加锁操作的? 2. 对于类似这样与版本变化的相关问题,应该去哪里找资料?(网上的资料都是之前的版本的)

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1305 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传