mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-20 17:27:36 +01:00
Merge pull request #10694 from jackpoz/loopcounter_race_condition
Core/Thread: Fix race condition in FreezeDetectorRunnable
This commit is contained in:
@@ -83,7 +83,7 @@
|
||||
|
||||
ACE_Atomic_Op<ACE_Thread_Mutex, bool> World::m_stopEvent = false;
|
||||
uint8 World::m_ExitCode = SHUTDOWN_EXIT_CODE;
|
||||
volatile uint32 World::m_worldLoopCounter = 0;
|
||||
ACE_Atomic_Op<ACE_Thread_Mutex, uint32> World::m_worldLoopCounter = 0;
|
||||
|
||||
float World::m_MaxVisibleDistanceOnContinents = DEFAULT_VISIBILITY_DISTANCE;
|
||||
float World::m_MaxVisibleDistanceInInstances = DEFAULT_VISIBILITY_INSTANCE;
|
||||
|
||||
@@ -514,7 +514,7 @@ struct CharacterNameData
|
||||
class World
|
||||
{
|
||||
public:
|
||||
static volatile uint32 m_worldLoopCounter;
|
||||
static ACE_Atomic_Op<ACE_Thread_Mutex, uint32> m_worldLoopCounter;
|
||||
|
||||
World();
|
||||
~World();
|
||||
|
||||
@@ -103,10 +103,11 @@ public:
|
||||
ACE_Based::Thread::Sleep(1000);
|
||||
uint32 curtime = getMSTime();
|
||||
// normal work
|
||||
if (_loops != World::m_worldLoopCounter)
|
||||
uint32 worldLoopCounter = World::m_worldLoopCounter.value();
|
||||
if (_loops != worldLoopCounter)
|
||||
{
|
||||
_lastChange = curtime;
|
||||
_loops = World::m_worldLoopCounter;
|
||||
_loops = worldLoopCounter;
|
||||
}
|
||||
// possible freeze
|
||||
else if (getMSTimeDiff(_lastChange, curtime) > _delaytime)
|
||||
|
||||
Reference in New Issue
Block a user