#### 请教各位大佬一个关于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. 对于类似这样与版本变化的相关问题,应该去哪里找资料?(网上的资料都是之前的版本的)
有疑问加站长微信联系(非本文作者)