mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-21 17:54:48 +01:00
Core/Misc: Multithread query cache loading
This commit is contained in:
@@ -51,6 +51,7 @@
|
||||
#include "SpellScript.h"
|
||||
#include "StringConvert.h"
|
||||
#include "TemporarySummon.h"
|
||||
#include "ThreadPool.h"
|
||||
#include "UpdateMask.h"
|
||||
#include "Util.h"
|
||||
#include "Vehicle.h"
|
||||
@@ -10386,30 +10387,34 @@ void ObjectMgr::InitializeQueriesData(QueryDataGroup mask)
|
||||
return;
|
||||
}
|
||||
|
||||
Trinity::ThreadPool pool;
|
||||
|
||||
// Initialize Query data for creatures
|
||||
if (mask & QUERY_DATA_CREATURES)
|
||||
for (auto& creatureTemplatePair : _creatureTemplateStore)
|
||||
creatureTemplatePair.second.InitializeQueryData();
|
||||
pool.PostWork([creature = &creatureTemplatePair.second]() { creature->InitializeQueryData(); });
|
||||
|
||||
// Initialize Query Data for gameobjects
|
||||
if (mask & QUERY_DATA_GAMEOBJECTS)
|
||||
for (auto& gameObjectTemplatePair : _gameObjectTemplateStore)
|
||||
gameObjectTemplatePair.second.InitializeQueryData();
|
||||
pool.PostWork([gobj = &gameObjectTemplatePair.second]() { gobj->InitializeQueryData(); });
|
||||
|
||||
// Initialize Query Data for items
|
||||
if (mask & QUERY_DATA_ITEMS)
|
||||
for (auto& itemTemplatePair : _itemTemplateStore)
|
||||
itemTemplatePair.second.InitializeQueryData();
|
||||
pool.PostWork([item = &itemTemplatePair.second]() { item->InitializeQueryData(); });
|
||||
|
||||
// Initialize Query Data for quests
|
||||
if (mask & QUERY_DATA_QUESTS)
|
||||
for (auto& questTemplatePair : _questTemplates)
|
||||
questTemplatePair.second.InitializeQueryData();
|
||||
pool.PostWork([quest = &questTemplatePair.second]() { quest->InitializeQueryData(); });
|
||||
|
||||
// Initialize Quest POI data
|
||||
if (mask & QUERY_DATA_POIS)
|
||||
for (auto& poiWrapperPair : _questPOIStore)
|
||||
poiWrapperPair.second.InitializeQueryData();
|
||||
pool.PostWork([poi = &poiWrapperPair.second]() { poi->InitializeQueryData(); });
|
||||
|
||||
pool.Join();
|
||||
|
||||
TC_LOG_INFO("server.loading", ">> Initialized query cache data in %u ms", GetMSTimeDiffToNow(oldMSTime));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user