go_dreamfactory/comm/pool.go
2023-05-30 14:23:13 +08:00

64 lines
1.2 KiB
Go

package comm
import (
"go_dreamfactory/pb"
"sync"
)
var taskParamPool = &sync.Pool{
New: func() interface{} {
return &TaskParam{}
},
}
//GetBuriedParam
func GetTaskParam(t TaskType, p ...int32) *TaskParam {
task := taskParamPool.Get().(*TaskParam)
task.TT = t
task.Params = append(task.Params, p...)
return task
}
func PuttaskParam(r *TaskParam) {
r.Params = r.Params[:0]
taskParamPool.Put(r)
}
var buriedParamPool = &sync.Pool{
New: func() interface{} {
return &pb.BuriedParam{
Value: 0,
Filter: make([]int32, 0),
}
},
}
//普通任务
func GetBuriedParam(t TaskType, vaule int32, p ...int32) *pb.BuriedParam {
task := buriedParamPool.Get().(*pb.BuriedParam)
task.TaskType = int32(t)
task.Value = vaule
if len(p) > 0 {
task.Filter = append(task.Filter, p...)
}
return task
}
//统计型任务
func GetBuriedParam2(t TaskType, statistics string, p ...int32) *pb.BuriedParam {
task := buriedParamPool.Get().(*pb.BuriedParam)
task.TaskType = int32(t)
task.Statistics = statistics
if len(p) > 0 {
task.Filter = append(task.Filter, p...)
}
return task
}
func PutburiedParam(r *pb.BuriedParam) {
r.Filter = r.Filter[:0]
r.Value = 0
r.Statistics = ""
buriedParamPool.Put(r)
}