You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
676 B
41 lines
676 B
package pools
|
|
|
|
import (
|
|
"reflect"
|
|
)
|
|
|
|
/*
|
|
系统描述:泛型对象池
|
|
*/
|
|
|
|
var (
|
|
defobjpools *PoolManager = NewPoolMessager()
|
|
deftypepools *typePools = NewTypePool()
|
|
)
|
|
|
|
func Add[T any](name string, newFunc func() T) {
|
|
defobjpools.pools[name] = NewObjectPool(newFunc)
|
|
}
|
|
|
|
func Get[T any](name string) (v T) {
|
|
return get[T](defobjpools, name)
|
|
}
|
|
|
|
func Put[T any](name string, v T) {
|
|
put[T](defobjpools, name, v)
|
|
}
|
|
|
|
// 注册类型
|
|
func InitTypes(ts ...reflect.Type) {
|
|
for _, t := range ts {
|
|
deftypepools.Init(t)
|
|
}
|
|
}
|
|
|
|
func GetForType(t reflect.Type) interface{} {
|
|
return deftypepools.Get(t)
|
|
}
|
|
|
|
func PutForType(t reflect.Type, v interface{}) {
|
|
deftypepools.Put(t, v)
|
|
}
|
|
|