备份的序列化对象使用内存池
This commit is contained in:
parent
e0b255a859
commit
d190c2edf8
@ -82,6 +82,17 @@ type PlayerMsg struct {
|
|||||||
B []byte
|
B []byte
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var playerDataPool = sync.Pool{
|
||||||
|
New: func() interface{} {
|
||||||
|
return &PlayerBackUp{}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
func (pd *PlayerBackUp) Reset() {
|
||||||
|
pd.Data = msg.ResPlayerBaseInfo{}
|
||||||
|
pd.PlayMod = nil
|
||||||
|
}
|
||||||
|
|
||||||
func (p *Player) Stop() {
|
func (p *Player) Stop() {
|
||||||
p.wg.Wait()
|
p.wg.Wait()
|
||||||
p.signalDispatcherStop()
|
p.signalDispatcherStop()
|
||||||
@ -201,10 +212,10 @@ func (p *Player) ProcessTrigger() {
|
|||||||
|
|
||||||
// 接口请求之前备份数据
|
// 接口请求之前备份数据
|
||||||
func (p *Player) BackUp() *PlayerBackUp {
|
func (p *Player) BackUp() *PlayerBackUp {
|
||||||
BackUp := PlayerBackUp{}
|
BackUp := playerDataPool.Get().(*PlayerBackUp)
|
||||||
p.PlayMod.BackUp(&BackUp)
|
p.PlayMod.BackUp(BackUp)
|
||||||
BackUp.Data = p.GetPlayerBaseMod().BackUp()
|
BackUp.Data = p.GetPlayerBaseMod().BackUp()
|
||||||
return &BackUp
|
return BackUp
|
||||||
}
|
}
|
||||||
|
|
||||||
// 接口发生错误时 还原数据
|
// 接口发生错误时 还原数据
|
||||||
@ -212,6 +223,8 @@ func (p *Player) Recover(backUp *PlayerBackUp) {
|
|||||||
// p.GetPlayerBaseMod().Data = backUp.Data
|
// p.GetPlayerBaseMod().Data = backUp.Data
|
||||||
p.PlayMod.Recover(backUp)
|
p.PlayMod.Recover(backUp)
|
||||||
p.Msg = make([]PlayerMsg, 0)
|
p.Msg = make([]PlayerMsg, 0)
|
||||||
|
backUp.Reset()
|
||||||
|
playerDataPool.Put(backUp)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Player) InitPlayer(UserName string) error {
|
func (p *Player) InitPlayer(UserName string) error {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user