From d61350291204992c600c6bf944cae02f406d2c20 Mon Sep 17 00:00:00 2001 From: halst Date: Thu, 4 Nov 2021 20:01:58 +0800 Subject: [PATCH] use sync.map is better (#1145) * use sync.map is better * Use LoadOrStore --- fs.go | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/fs.go b/fs.go index f8d4add94c..147f315123 100644 --- a/fs.go +++ b/fs.go @@ -1370,18 +1370,10 @@ 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, _ := filesLockMap.LoadOrStore(absPath,&sync.Mutex{}) + filelock:=v.(*sync.Mutex) + return filelock }