Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
System.Threading.ReaderWriterLockSlim Class Reference

Classes

struct  SpinLock
 
struct  TimeoutTracker
 

Public Member Functions

 ReaderWriterLockSlim ()
 
 ReaderWriterLockSlim (LockRecursionPolicy recursionPolicy)
 
void EnterReadLock ()
 
bool TryEnterReadLock (TimeSpan timeout)
 
bool TryEnterReadLock (int millisecondsTimeout)
 
void EnterWriteLock ()
 
bool TryEnterWriteLock (TimeSpan timeout)
 
bool TryEnterWriteLock (int millisecondsTimeout)
 
void EnterUpgradeableReadLock ()
 
bool TryEnterUpgradeableReadLock (TimeSpan timeout)
 
bool TryEnterUpgradeableReadLock (int millisecondsTimeout)
 
void ExitReadLock ()
 
void ExitWriteLock ()
 
void ExitUpgradeableReadLock ()
 
void Dispose ()
 

Properties

bool HasNoWaiters [get, set]
 
bool IsReadLockHeld [get]
 
bool IsUpgradeableReadLockHeld [get]
 
bool IsWriteLockHeld [get]
 
LockRecursionPolicy RecursionPolicy [get]
 
int CurrentReadCount [get]
 
int RecursiveReadCount [get]
 
int RecursiveUpgradeCount [get]
 
int RecursiveWriteCount [get]
 
int WaitingReadCount [get]
 
int WaitingUpgradeCount [get]
 
int WaitingWriteCount [get]
 

Private Types

enum  WaiterStates : byte { None = 0 , NoWaiters = 1 , WriteWaiterSignaled = 2 , UpgradeableReadWaiterSignaled = 4 }
 
enum  EnterSpinLockReason {
  EnterAnyRead = 0 , ExitAnyRead = 1 , EnterWrite = 2 , UpgradeToWrite = 3 ,
  EnterRecursiveWrite = 4 , ExitAnyWrite = 5 , OperationMask = 7 , Wait = 8
}
 
enum  EnterLockType { Read , UpgradeableRead , Write , UpgradeToWrite }
 

Private Member Functions

void InitializeThreadCounts ()
 
bool IsRwHashEntryChanged (ReaderWriterCount lrwc)
 
ReaderWriterCount GetThreadRWCount (bool dontAllocate)
 
bool TryEnterReadLock (TimeoutTracker timeout)
 
bool TryEnterReadLockCore (TimeoutTracker timeout)
 
bool TryEnterWriteLock (TimeoutTracker timeout)
 
bool TryEnterWriteLockCore (TimeoutTracker timeout)
 
bool TryEnterUpgradeableReadLock (TimeoutTracker timeout)
 
bool TryEnterUpgradeableReadLockCore (TimeoutTracker timeout)
 
void LazyCreateEvent ([NotNull] ref EventWaitHandle waitEvent, EnterLockType enterLockType)
 
bool WaitOnEvent (EventWaitHandle waitEvent, ref uint numWaiters, TimeoutTracker timeout, EnterLockType enterLockType)
 
void ExitAndWakeUpAppropriateWaiters ()
 
void ExitAndWakeUpAppropriateWaitersPreferringWriters ()
 
void ExitAndWakeUpAppropriateReadWaiters ()
 
bool IsWriterAcquired ()
 
void SetWriterAcquired ()
 
void ClearWriterAcquired ()
 
void SetWritersWaiting ()
 
void ClearWritersWaiting ()
 
void SetUpgraderWaiting ()
 
void ClearUpgraderWaiting ()
 
uint GetNumReaders ()
 
bool ShouldSpinForEnterAnyRead ()
 
bool ShouldSpinForEnterAnyWrite (bool isUpgradeToWrite)
 
void Dispose (bool disposing)
 

Static Private Member Functions

static bool IsRWEntryEmpty (ReaderWriterCount rwc)
 
static void SpinWait (int spinCount)
 

Private Attributes

readonly bool _fIsReentrant
 
SpinLock _spinLock
 
uint _numWriteWaiters
 
uint _numReadWaiters
 
uint _numWriteUpgradeWaiters
 
uint _numUpgradeWaiters
 
WaiterStates _waiterStates
 
int _upgradeLockOwnerId
 
int _writeLockOwnerId
 
EventWaitHandle _writeEvent
 
EventWaitHandle _readEvent
 
EventWaitHandle _upgradeEvent
 
EventWaitHandle _waitUpgradeEvent
 
readonly long _lockID
 
bool _fUpgradeThreadHoldingRead
 
uint _owners
 
bool _fDisposed
 

Static Private Attributes

static long s_nextLockID
 
static ReaderWriterCount t_rwc
 

Detailed Description

Definition at line 6 of file ReaderWriterLockSlim.cs.


The documentation for this class was generated from the following file: