Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ ExitAndWakeUpAppropriateReadWaiters()

void System.Threading.ReaderWriterLockSlim.ExitAndWakeUpAppropriateReadWaiters ( )
inlineprivate

Definition at line 1090 of file ReaderWriterLockSlim.cs.

1091 {
1093 {
1094 _spinLock.Exit();
1095 return;
1096 }
1097 bool flag = _numReadWaiters != 0;
1098 bool flag2 = _numUpgradeWaiters != 0 && _upgradeLockOwnerId == -1;
1099 if (flag2)
1100 {
1101 if ((_waiterStates & WaiterStates.UpgradeableReadWaiterSignaled) == 0)
1102 {
1103 _waiterStates |= WaiterStates.UpgradeableReadWaiterSignaled;
1104 }
1105 else
1106 {
1107 flag2 = false;
1108 }
1109 }
1110 _spinLock.Exit();
1111 if (flag)
1112 {
1113 _readEvent.Set();
1114 }
1115 if (flag2)
1116 {
1118 }
1119 }

References System.Threading.ReaderWriterLockSlim._numReadWaiters, System.Threading.ReaderWriterLockSlim._numUpgradeWaiters, System.Threading.ReaderWriterLockSlim._numWriteUpgradeWaiters, System.Threading.ReaderWriterLockSlim._numWriteWaiters, System.Threading.ReaderWriterLockSlim._readEvent, System.Threading.ReaderWriterLockSlim._spinLock, System.Threading.ReaderWriterLockSlim._upgradeEvent, System.Threading.ReaderWriterLockSlim._upgradeLockOwnerId, System.Threading.ReaderWriterLockSlim._waiterStates, System.Threading.ReaderWriterLockSlim.SpinLock.Exit(), System.Threading.ReaderWriterLockSlim.HasNoWaiters, and System.Threading.EventWaitHandle.Set().

Referenced by System.Threading.ReaderWriterLockSlim.ExitAndWakeUpAppropriateWaitersPreferringWriters(), and System.Threading.ReaderWriterLockSlim.WaitOnEvent().