From: Roy Reznik Date: Sun, 22 Jun 2025 12:37:23 +0000 (+0000) Subject: cmd/go: modload should use a read-write lock to improve concurrency X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=4ab1aec00799f91e96182cbbffd1de405cd52e93;p=gostls13.git 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: 6ad6f6a70e21dc45fc0c880b8732fb87c656c520 GitHub-Pull-Request: golang/go#74311 Reviewed-on: https://go-review.googlesource.com/c/go/+/683215 Reviewed-by: Michael Matloob Reviewed-by: Ian Alexander Reviewed-by: Michael Matloob LUCI-TryBot-Result: Go LUCI --- diff --git a/src/cmd/go/internal/modload/init.go b/src/cmd/go/internal/modload/init.go index e537fddfcd..cb9d74df68 100644 --- a/src/cmd/go/internal/modload/init.go +++ b/src/cmd/go/internal/modload/init.go @@ -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] }