refactor: 优化 solo.guid 的使用,命名空间需要注册
This commit is contained in:
parent
506e0f2ee4
commit
6238883dc9
|
@ -1,37 +1,43 @@
|
||||||
package sole
|
package sole
|
||||||
|
|
||||||
import "sync"
|
import (
|
||||||
|
"sync/atomic"
|
||||||
var (
|
|
||||||
global int64
|
|
||||||
namespace map[any]int64
|
|
||||||
mutex sync.Mutex
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
var (
|
||||||
namespace = map[any]int64{}
|
global atomic.Int64 // 全局唯一标识符
|
||||||
|
namespace = map[any]*atomic.Int64{} // 唯一标识符命名空间
|
||||||
|
)
|
||||||
|
|
||||||
|
// RegNameSpace 注册特定命名空间的唯一标识符
|
||||||
|
func RegNameSpace(name any) {
|
||||||
|
if namespace == nil {
|
||||||
|
namespace = map[any]*atomic.Int64{}
|
||||||
|
}
|
||||||
|
namespace[name] = new(atomic.Int64)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// UnRegNameSpace 解除注销特定命名空间的唯一标识符
|
||||||
|
func UnRegNameSpace(name any) {
|
||||||
|
delete(namespace, name)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get 获取全局唯一标识符
|
||||||
func Get() int64 {
|
func Get() int64 {
|
||||||
global++
|
return global.Add(1)
|
||||||
return global
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Reset 重置全局唯一标识符
|
||||||
|
func Reset() {
|
||||||
|
global.Store(0)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetWith 获取特定命名空间的唯一标识符
|
||||||
func GetWith(name any) int64 {
|
func GetWith(name any) int64 {
|
||||||
namespace[name]++
|
return namespace[name].Add(1)
|
||||||
return namespace[name]
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetSync() int64 {
|
// ResetWith 重置特定命名空间的唯一标识符
|
||||||
mutex.Lock()
|
func ResetWith(name any) {
|
||||||
defer mutex.Unlock()
|
namespace[name].Store(0)
|
||||||
global++
|
|
||||||
return global
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetSyncWith(name any) int64 {
|
|
||||||
mutex.Lock()
|
|
||||||
defer mutex.Unlock()
|
|
||||||
namespace[name]++
|
|
||||||
return namespace[name]
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue