mirror of
https://github.com/mangosfour/server.git
synced 2025-12-21 10:37:06 +00:00
[9245] Remove CellLock class and all cell-level thread locking.
* It was wasting CPU power as cell-level locking is not needed. * Future multithreading will be on map-level. * CellLock was just a 'proxy' between Cell and CellPair and in some cases carried redundant data. * Some minor cleanup in Cell::Visit/Map::Visit.
This commit is contained in:
parent
39b7636094
commit
0ff9250de2
19 changed files with 104 additions and 209 deletions
|
|
@ -764,9 +764,8 @@ void AreaAura::Update(uint32 diff)
|
|||
MaNGOS::UnitListSearcher<MaNGOS::AnyFriendlyUnitInObjectRangeCheck> searcher(caster,targets, u_check);
|
||||
TypeContainerVisitor<MaNGOS::UnitListSearcher<MaNGOS::AnyFriendlyUnitInObjectRangeCheck>, WorldTypeMapContainer > world_unit_searcher(searcher);
|
||||
TypeContainerVisitor<MaNGOS::UnitListSearcher<MaNGOS::AnyFriendlyUnitInObjectRangeCheck>, GridTypeMapContainer > grid_unit_searcher(searcher);
|
||||
CellLock<GridReadGuard> cell_lock(cell, p);
|
||||
cell_lock->Visit(cell_lock, world_unit_searcher, *caster->GetMap(), *caster, m_radius);
|
||||
cell_lock->Visit(cell_lock, grid_unit_searcher, *caster->GetMap(), *caster, m_radius);
|
||||
cell.Visit(p, world_unit_searcher, *caster->GetMap(), *caster, m_radius);
|
||||
cell.Visit(p, grid_unit_searcher, *caster->GetMap(), *caster, m_radius);
|
||||
break;
|
||||
}
|
||||
case AREA_AURA_ENEMY:
|
||||
|
|
@ -780,9 +779,8 @@ void AreaAura::Update(uint32 diff)
|
|||
MaNGOS::UnitListSearcher<MaNGOS::AnyAoETargetUnitInObjectRangeCheck> searcher(caster, targets, u_check);
|
||||
TypeContainerVisitor<MaNGOS::UnitListSearcher<MaNGOS::AnyAoETargetUnitInObjectRangeCheck>, WorldTypeMapContainer > world_unit_searcher(searcher);
|
||||
TypeContainerVisitor<MaNGOS::UnitListSearcher<MaNGOS::AnyAoETargetUnitInObjectRangeCheck>, GridTypeMapContainer > grid_unit_searcher(searcher);
|
||||
CellLock<GridReadGuard> cell_lock(cell, p);
|
||||
cell_lock->Visit(cell_lock, world_unit_searcher, *caster->GetMap(), *caster, m_radius);
|
||||
cell_lock->Visit(cell_lock, grid_unit_searcher, *caster->GetMap(), *caster, m_radius);
|
||||
cell.Visit(p, world_unit_searcher, *caster->GetMap(), *caster, m_radius);
|
||||
cell.Visit(p, grid_unit_searcher, *caster->GetMap(), *caster, m_radius);
|
||||
break;
|
||||
}
|
||||
case AREA_AURA_OWNER:
|
||||
|
|
@ -7459,10 +7457,8 @@ void Aura::PeriodicDummyTick()
|
|||
TypeContainerVisitor<MaNGOS::UnitListSearcher<MaNGOS::AnyUnfriendlyVisibleUnitInObjectRangeCheck>, GridTypeMapContainer > grid_object_checker(checker);
|
||||
TypeContainerVisitor<MaNGOS::UnitListSearcher<MaNGOS::AnyUnfriendlyVisibleUnitInObjectRangeCheck>, WorldTypeMapContainer > world_object_checker(checker);
|
||||
|
||||
CellLock<GridReadGuard> cell_lock(cell, p);
|
||||
|
||||
cell_lock->Visit(cell_lock, grid_object_checker, *m_target->GetMap(), *m_target, radius);
|
||||
cell_lock->Visit(cell_lock, world_object_checker, *m_target->GetMap(), *m_target, radius);
|
||||
cell.Visit(p, grid_object_checker, *m_target->GetMap(), *m_target, radius);
|
||||
cell.Visit(p, world_object_checker, *m_target->GetMap(), *m_target, radius);
|
||||
}
|
||||
|
||||
if(targets.empty())
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue