From 04bac6ec20596b9758c22f6ae80c9af83bc6d852 Mon Sep 17 00:00:00 2001 From: liusong <1736912420@qq.com> Date: Wed, 3 Nov 2021 18:21:13 +0800 Subject: [PATCH 1/2] use sync.map is better --- fs.go | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/fs.go b/fs.go index f8d4add94c..812eef43be 100644 --- a/fs.go +++ b/fs.go @@ -1370,18 +1370,15 @@ func fsModTime(t time.Time) time.Time { return t.In(time.UTC).Truncate(time.Second) } -var ( - filesLockMap = make(map[string]*sync.Mutex) - filesLockMapLock sync.Mutex -) +var filesLockMap sync.Map func getFileLock(absPath string) *sync.Mutex { - filesLockMapLock.Lock() - flock := filesLockMap[absPath] - if flock == nil { - flock = &sync.Mutex{} - filesLockMap[absPath] = flock - } - filesLockMapLock.Unlock() - return flock + v, exist := filesLockMap.Load(absPath) + if exist == false { + flock := &sync.Mutex{} + filesLockMap.Store(absPath,flock) + return flock + } + filelock:=v.(*sync.Mutex) + return filelock } From 918705ad37a92dabda899c7948ef69db5ed8a771 Mon Sep 17 00:00:00 2001 From: liusong <1736912420@qq.com> Date: Thu, 4 Nov 2021 16:50:50 +0800 Subject: [PATCH 2/2] Use LoadOrStore --- fs.go | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/fs.go b/fs.go index 812eef43be..147f315123 100644 --- a/fs.go +++ b/fs.go @@ -1373,12 +1373,7 @@ func fsModTime(t time.Time) time.Time { var filesLockMap sync.Map func getFileLock(absPath string) *sync.Mutex { - v, exist := filesLockMap.Load(absPath) - if exist == false { - flock := &sync.Mutex{} - filesLockMap.Store(absPath,flock) - return flock - } + v, _ := filesLockMap.LoadOrStore(absPath,&sync.Mutex{}) filelock:=v.(*sync.Mutex) return filelock }