Stop using monitored locks in MapleMap
This commit is contained in:
@@ -38,13 +38,6 @@ import constants.id.MobId;
|
|||||||
import constants.inventory.ItemConstants;
|
import constants.inventory.ItemConstants;
|
||||||
import net.packet.Packet;
|
import net.packet.Packet;
|
||||||
import net.server.Server;
|
import net.server.Server;
|
||||||
import net.server.audit.locks.MonitoredLockType;
|
|
||||||
import net.server.audit.locks.MonitoredReadLock;
|
|
||||||
import net.server.audit.locks.MonitoredReentrantReadWriteLock;
|
|
||||||
import net.server.audit.locks.MonitoredWriteLock;
|
|
||||||
import net.server.audit.locks.factory.MonitoredReadLockFactory;
|
|
||||||
import net.server.audit.locks.factory.MonitoredReentrantLockFactory;
|
|
||||||
import net.server.audit.locks.factory.MonitoredWriteLockFactory;
|
|
||||||
import net.server.channel.Channel;
|
import net.server.channel.Channel;
|
||||||
import net.server.coordinator.world.MonsterAggroCoordinator;
|
import net.server.coordinator.world.MonsterAggroCoordinator;
|
||||||
import net.server.services.task.channel.MobMistService;
|
import net.server.services.task.channel.MobMistService;
|
||||||
@@ -77,6 +70,9 @@ import java.util.Map.Entry;
|
|||||||
import java.util.concurrent.ScheduledFuture;
|
import java.util.concurrent.ScheduledFuture;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
import java.util.concurrent.locks.Lock;
|
import java.util.concurrent.locks.Lock;
|
||||||
|
import java.util.concurrent.locks.ReadWriteLock;
|
||||||
|
import java.util.concurrent.locks.ReentrantLock;
|
||||||
|
import java.util.concurrent.locks.ReentrantReadWriteLock;
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
import static java.util.concurrent.TimeUnit.MINUTES;
|
import static java.util.concurrent.TimeUnit.MINUTES;
|
||||||
@@ -162,15 +158,15 @@ public class MapleMap {
|
|||||||
private int timeExpand;
|
private int timeExpand;
|
||||||
|
|
||||||
//locks
|
//locks
|
||||||
private final MonitoredReadLock chrRLock;
|
private final Lock chrRLock;
|
||||||
private final MonitoredWriteLock chrWLock;
|
private final Lock chrWLock;
|
||||||
private final MonitoredReadLock objectRLock;
|
private final Lock objectRLock;
|
||||||
private final MonitoredWriteLock objectWLock;
|
private final Lock objectWLock;
|
||||||
|
|
||||||
private final Lock lootLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.MAP_LOOT, true);
|
private final Lock lootLock = new ReentrantLock(true);
|
||||||
|
|
||||||
// due to the nature of loadMapFromWz (synchronized), sole function that calls 'generateMapDropRangeCache', this lock remains optional.
|
// due to the nature of loadMapFromWz (synchronized), sole function that calls 'generateMapDropRangeCache', this lock remains optional.
|
||||||
private static final Lock bndLock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.MAP_BOUNDS, true);
|
private static final Lock bndLock = new ReentrantLock(true);
|
||||||
|
|
||||||
public MapleMap(int mapid, int world, int channel, int returnMapId, float monsterRate) {
|
public MapleMap(int mapid, int world, int channel, int returnMapId, float monsterRate) {
|
||||||
this.mapid = mapid;
|
this.mapid = mapid;
|
||||||
@@ -181,13 +177,14 @@ public class MapleMap {
|
|||||||
if (this.monsterRate == 0) {
|
if (this.monsterRate == 0) {
|
||||||
this.monsterRate = 1;
|
this.monsterRate = 1;
|
||||||
}
|
}
|
||||||
final MonitoredReentrantReadWriteLock chrLock = new MonitoredReentrantReadWriteLock(MonitoredLockType.MAP_CHRS, true);
|
|
||||||
chrRLock = MonitoredReadLockFactory.createLock(chrLock);
|
|
||||||
chrWLock = MonitoredWriteLockFactory.createLock(chrLock);
|
|
||||||
|
|
||||||
final MonitoredReentrantReadWriteLock objectLock = new MonitoredReentrantReadWriteLock(MonitoredLockType.MAP_OBJS, true);
|
final ReadWriteLock chrLock = new ReentrantReadWriteLock(true);
|
||||||
objectRLock = MonitoredReadLockFactory.createLock(objectLock);
|
chrRLock = chrLock.readLock();
|
||||||
objectWLock = MonitoredWriteLockFactory.createLock(objectLock);
|
chrWLock = chrLock.writeLock();
|
||||||
|
|
||||||
|
final ReadWriteLock objectLock = new ReentrantReadWriteLock(true);
|
||||||
|
objectRLock = objectLock.readLock();
|
||||||
|
objectWLock = objectLock.writeLock();
|
||||||
|
|
||||||
aggroMonitor = new MonsterAggroCoordinator();
|
aggroMonitor = new MonsterAggroCoordinator();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user