revert: round 并发安全问题回撤(死锁问题)

This commit is contained in:
kercylan98 2023-10-16 18:43:55 +08:00
parent 5259e07a32
commit 6e11c5edec
1 changed files with 7 additions and 8 deletions

View File

@ -5,7 +5,6 @@ import (
"github.com/kercylan98/minotaur/utils/random" "github.com/kercylan98/minotaur/utils/random"
"github.com/kercylan98/minotaur/utils/slice" "github.com/kercylan98/minotaur/utils/slice"
"github.com/kercylan98/minotaur/utils/timer" "github.com/kercylan98/minotaur/utils/timer"
"sync"
"time" "time"
) )
@ -67,7 +66,7 @@ type Round[Data RoundData] struct {
actionTimeoutEventHandles []RoundActionTimeoutEvent[Data] // 行动超时事件 actionTimeoutEventHandles []RoundActionTimeoutEvent[Data] // 行动超时事件
actionRefreshEventHandles []RoundActionRefreshEvent[Data] // 行动刷新事件 actionRefreshEventHandles []RoundActionRefreshEvent[Data] // 行动刷新事件
actionMutex sync.Mutex //actionMutex sync.Mutex
} }
// GetData 获取游戏数据 // GetData 获取游戏数据
@ -80,8 +79,8 @@ func (slf *Round[Data]) GetData() Data {
func (slf *Round[Data]) Start() { func (slf *Round[Data]) Start() {
slf.currentEntity = -1 slf.currentEntity = -1
slf.round = 1 slf.round = 1
slf.actionMutex.Lock() //slf.actionMutex.Lock()
defer slf.actionMutex.Unlock() //defer slf.actionMutex.Unlock()
slf.loop(false) slf.loop(false)
} }
@ -163,8 +162,8 @@ func (slf *Round[Data]) SkipCamp() {
func (slf *Round[Data]) ActionRefresh() { func (slf *Round[Data]) ActionRefresh() {
slf.actionTimeoutTime = time.Now().Add(slf.actionTimeout).Unix() slf.actionTimeoutTime = time.Now().Add(slf.actionTimeout).Unix()
slf.ticker.After(slf.actionTimeoutTickerName, slf.actionTimeout, func(timeout bool) { slf.ticker.After(slf.actionTimeoutTickerName, slf.actionTimeout, func(timeout bool) {
slf.actionMutex.Lock() //slf.actionMutex.Lock()
defer slf.actionMutex.Unlock() //defer slf.actionMutex.Unlock()
slf.loop(timeout) slf.loop(timeout)
}, true) }, true)
} }
@ -175,8 +174,8 @@ func (slf *Round[Data]) ActionFinish() {
if slf.shareAction { if slf.shareAction {
slf.currentEntity = -1 slf.currentEntity = -1
} }
slf.actionMutex.Lock() //slf.actionMutex.Lock()
defer slf.actionMutex.Unlock() //defer slf.actionMutex.Unlock()
slf.loop(false) slf.loop(false)
} }