package oauth import "sync" // CredentialLock 针对存储策略凭证的锁 type CredentialLock interface { Lock(uint) Unlock(uint) } var GlobalMutex = mutexMap{} type mutexMap struct { locks sync.Map } func (m *mutexMap) Lock(id uint) { lock, _ := m.locks.LoadOrStore(id, &sync.Mutex{}) lock.(*sync.Mutex).Lock() } func (m *mutexMap) Unlock(id uint) { lock, _ := m.locks.LoadOrStore(id, &sync.Mutex{}) lock.(*sync.Mutex).Unlock() }