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 }