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); uint value = Interlocked.Increment(ref numOfRepairedGenerators);
if (value == GameData.numOfGeneratorRequiredForEmergencyExit) if (value == GameData.numOfGeneratorRequiredForEmergencyExit)
{ {
GameObjLockDict[GameObjType.EmergencyExit].EnterWriteLock();
GameObjLockDict[GameObjType.EmergencyExit].EnterReadLock();
try try
{ {
Random r = new Random(Environment.TickCount); Random r = new Random(Environment.TickCount);
@@ -31,13 +31,13 @@ namespace GameClass.GameObj
} }
finally finally
{ {
GameObjLockDict[GameObjType.EmergencyExit].ExitWriteLock();
GameObjLockDict[GameObjType.EmergencyExit].ExitReadLock();
} }
} }
else else
if (value == GameData.numOfGeneratorRequiredForRepair) if (value == GameData.numOfGeneratorRequiredForRepair)
{ {
GameObjLockDict[GameObjType.Doorway].EnterWriteLock();
GameObjLockDict[GameObjType.Doorway].EnterReadLock();
try try
{ {
foreach (Doorway doorway in GameObjDict[GameObjType.Doorway]) foreach (Doorway doorway in GameObjDict[GameObjType.Doorway])
@@ -45,7 +45,7 @@ namespace GameClass.GameObj
} }
finally 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) if (!gameMap.Timer.IsGaming)
return; return;
gameMap.GameObjLockDict[GameObjType.Character].EnterWriteLock();
gameMap.GameObjLockDict[GameObjType.Character].EnterReadLock();
try try
{ {
foreach (Character player in gameMap.GameObjDict[GameObjType.Character]) foreach (Character player in gameMap.GameObjDict[GameObjType.Character])
@@ -291,7 +291,7 @@ namespace Gaming
} }
finally 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; int len = availableCellForGenerateProp.Count;
Random r = new Random(Environment.TickCount); Random r = new Random(Environment.TickCount);


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


Loading…
Cancel
Save