cmd/go: modload should use a read-write lock to improve concurrency

This PR will be imported into Gerrit with the title and first
comment (this text) used to generate the subject and body of
the Gerrit change.

Change-Id: I3f9bc8a2459059a924a04fa02794e258957819b5
GitHub-Last-Rev: 6ad6f6a70e
GitHub-Pull-Request: golang/go#74311
Reviewed-on: https://go-review.googlesource.com/c/go/+/683215
Reviewed-by: Michael Matloob <matloob@golang.org>
Reviewed-by: Ian Alexander <jitsu@google.com>
Reviewed-by: Michael Matloob <matloob@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
This commit is contained in:
Roy Reznik 2025-06-22 12:37:23 +00:00 committed by Michael Matloob
parent e666972a67
commit 4ab1aec007

View file

@ -149,7 +149,7 @@ type MainModuleSet struct {
// highest replaced version of each module path; empty string for wildcard-only replacements
highestReplaced map[string]string
indexMu sync.Mutex
indexMu sync.RWMutex
indices map[module.Version]*modFileIndex
}
@ -228,8 +228,8 @@ func (mms *MainModuleSet) GetSingleIndexOrNil() *modFileIndex {
}
func (mms *MainModuleSet) Index(m module.Version) *modFileIndex {
mms.indexMu.Lock()
defer mms.indexMu.Unlock()
mms.indexMu.RLock()
defer mms.indexMu.RUnlock()
return mms.indices[m]
}