diff --git a/comm/pool.go b/comm/pool.go new file mode 100644 index 000000000..3008726b2 --- /dev/null +++ b/comm/pool.go @@ -0,0 +1,24 @@ +package comm + +import ( + "go_dreamfactory/pb" + "sync" +) + +var taskParamPool = &sync.Pool{ + New: func() interface{} { + return &pb.AgentMessage{} + }, +} + +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) +} diff --git a/modules/equipment/modelEquipment.go b/modules/equipment/modelEquipment.go index fd8cfaf21..43623423a 100644 --- a/modules/equipment/modelEquipment.go +++ b/modules/equipment/modelEquipment.go @@ -97,6 +97,7 @@ func (this *modelEquipmentComp) AddEquipments(session comm.IUserSession, cIds ma configure *cfg.GameEquip add map[string]*pb.DB_Equipment uId string = session.GetUserId() + tasks []*comm.TaskParam ) if configure, err = this.module.configure.GetEquipmentConfigure(); err != nil { return @@ -110,8 +111,8 @@ func (this *modelEquipmentComp) AddEquipments(session comm.IUserSession, cIds ma return nil, err } else { //随机任务 - this.module.ModuleRtask.SendToRtask(session, comm.Rtype50, 1, c.Star) - this.module.ModuleRtask.SendToRtask(session, comm.Rtype97, 1, c.Suittype, c.Star) + tasks = append(tasks, comm.GettaskParam(comm.Rtype50, 1, c.Star)) + tasks = append(tasks, comm.GettaskParam(comm.Rtype97, 1, c.Suittype, c.Star)) unm := int32(1) if equipment.AdverbEntry != nil { unm += int32(len(equipment.AdverbEntry)) @@ -119,19 +120,24 @@ func (this *modelEquipmentComp) AddEquipments(session comm.IUserSession, cIds ma if equipment.Adverbskill != nil { unm += int32(len(equipment.Adverbskill)) } - this.module.ModuleRtask.SendToRtask(session, comm.Rtype99, 1, unm, c.Star) + tasks = append(tasks, comm.GettaskParam(comm.Rtype99, 1, unm, c.Star)) if c.Pos == 7 { - this.module.ModuleRtask.SendToRtask(session, comm.Rtype103, 1, c.Star) + tasks = append(tasks, comm.GettaskParam(comm.Rtype103, 1, c.Star)) } else if c.Pos == 6 { - this.module.ModuleRtask.SendToRtask(session, comm.Rtype101, 1, c.Star) + tasks = append(tasks, comm.GettaskParam(comm.Rtype101, 1, c.Star)) } - add[equipment.Id] = equipment change = append(change, equipment) } } } } + + //异步出发任务启动 + if len(tasks) > 0 { + go this.module.ModuleRtask.TriggerTask(session.GetUserId(), tasks...) + } + if len(add) > 0 { var ( model *db.DBModel @@ -151,7 +157,6 @@ func (this *modelEquipmentComp) AddEquipments(session comm.IUserSession, cIds ma return } } - } return }