优化接入网关,解决协程泄漏的问题
This commit is contained in:
15
server/utils/keyed_mutex.go
Normal file
15
server/utils/keyed_mutex.go
Normal file
@ -0,0 +1,15 @@
|
||||
package utils
|
||||
|
||||
import "sync"
|
||||
|
||||
type KeyedMutex struct {
|
||||
mutexes sync.Map // Zero value is empty and ready for use
|
||||
}
|
||||
|
||||
func (m *KeyedMutex) Lock(key string) func() {
|
||||
value, _ := m.mutexes.LoadOrStore(key, &sync.Mutex{})
|
||||
mtx := value.(*sync.Mutex)
|
||||
mtx.Lock()
|
||||
|
||||
return func() { mtx.Unlock() }
|
||||
}
|
Reference in New Issue
Block a user