Browse Source

perf: change WriteLocks to ReadLocks

tags/v0.1.0
shangfengh 2 years ago
parent
commit
b35ed9d982
3 changed files with 8 additions and 8 deletions
  1. +4
    -4
      logic/GameClass/GameObj/Map/Map.cs
  2. +2
    -2
      logic/Gaming/Game.cs
  3. +2
    -2
      logic/Gaming/PropManager.cs

+ 4
- 4
logic/GameClass/GameObj/Map/Map.cs View File

@@ -21,7 +21,7 @@ namespace GameClass.GameObj
uint value = Interlocked.Increment(ref numOfRepairedGenerators);
if (value == GameData.numOfGeneratorRequiredForEmergencyExit)
{
GameObjLockDict[GameObjType.EmergencyExit].EnterWriteLock();
GameObjLockDict[GameObjType.EmergencyExit].EnterReadLock();
try
{
Random r = new Random(Environment.TickCount);
@@ -31,13 +31,13 @@ namespace GameClass.GameObj
}
finally
{
GameObjLockDict[GameObjType.EmergencyExit].ExitWriteLock();
GameObjLockDict[GameObjType.EmergencyExit].ExitReadLock();
}
}
else
if (value == GameData.numOfGeneratorRequiredForRepair)
{
GameObjLockDict[GameObjType.Doorway].EnterWriteLock();
GameObjLockDict[GameObjType.Doorway].EnterReadLock();
try
{
foreach (Doorway doorway in GameObjDict[GameObjType.Doorway])
@@ -45,7 +45,7 @@ namespace GameClass.GameObj
}
finally
{
GameObjLockDict[GameObjType.Doorway].ExitWriteLock();
GameObjLockDict[GameObjType.Doorway].ExitReadLock();
}
}
}


+ 2
- 2
logic/Gaming/Game.cs View File

@@ -281,7 +281,7 @@ namespace Gaming
{
if (!gameMap.Timer.IsGaming)
return;
gameMap.GameObjLockDict[GameObjType.Character].EnterWriteLock();
gameMap.GameObjLockDict[GameObjType.Character].EnterReadLock();
try
{
foreach (Character player in gameMap.GameObjDict[GameObjType.Character])
@@ -291,7 +291,7 @@ namespace Gaming
}
finally
{
gameMap.GameObjLockDict[GameObjType.Character].ExitWriteLock();
gameMap.GameObjLockDict[GameObjType.Character].ExitReadLock();
}
}



+ 2
- 2
logic/Gaming/PropManager.cs View File

@@ -142,7 +142,7 @@ namespace Gaming
int len = availableCellForGenerateProp.Count;
Random r = new Random(Environment.TickCount);

gameMap.GameObjLockDict[GameObjType.Chest].EnterWriteLock();
gameMap.GameObjLockDict[GameObjType.Chest].EnterReadLock();
try
{
int cou = 0;
@@ -181,7 +181,7 @@ namespace Gaming
}
finally
{
gameMap.GameObjLockDict[GameObjType.Chest].ExitWriteLock();
gameMap.GameObjLockDict[GameObjType.Chest].ExitReadLock();
}
/*
new Thread


Loading…
Cancel
Save