21 instantiations of State
System.Private.CoreLib (21)
src\libraries\System.Private.CoreLib\src\System\Threading\Lock.cs (21)
302
Debug.Assert(new
State
(this).IsLocked);
365
Debug.Assert(new
State
(this).IsLocked);
544
if (!waitEvent.WaitOneNoCheck(remainingTimeoutMs, new
State
(this).UseTrivialWaits))
691
Debug.Assert(!isHeld || new
State
(this).IsLocked);
732
Debug.Assert(!isHeld || new
State
(this).IsLocked);
870
Debug.Assert(!new
State
(this).UseTrivialWaits);
876
Debug.Assert(!new
State
(this).UseTrivialWaits);
972
if (new
State
(newState).HasAnySpinners) // overflow check
1023
if (new
State
(newState).HasAnyWaiters) // overflow check
1054
new
State
(Interlocked.CompareExchange(ref lockObj._state, toState._state, fromState._state));
1075
var state = new
State
(lockObj);
1092
var state = new
State
(Interlocked.Decrement(ref lockObj._state));
1132
var state = new
State
(lockObj);
1182
var state = new
State
(lockObj);
1212
var state = new
State
(Interlocked.Add(ref lockObj._state, Neg(SpinnerCountIncrement)));
1213
Debug.Assert(new
State
(state._state + SpinnerCountIncrement).HasAnySpinners);
1242
var state = new
State
(lockObj);
1298
var state = new
State
(lockObj);
1356
var state = new
State
(Interlocked.Add(ref lockObj._state, Neg(IsWaiterSignaledToWakeMask)));
1357
Debug.Assert(new
State
(state._state + IsWaiterSignaledToWakeMask).IsWaiterSignaledToWake);
1413
var state = new
State
(lockObj);
60 references to State
System.Private.CoreLib (60)
src\libraries\System.Private.CoreLib\src\System\Threading\Lock.cs (60)
69
State
.InitializeUseTrivialWaits(this, useTrivialWaits);
250
if (currentThreadId != UninitializedThreadId &&
State
.TryLock(this))
308
State
state =
State
.Unlock(this);
328
State
state =
State
.Unlock(this);
358
if (
State
.TryLock(this))
417
TryLockResult tryLockResult =
State
.TryLockBeforeSpinLoop(this, spinCount, out bool isFirstSpinner);
444
tryLockResult =
State
.TryLockInsideSpinLoop(this);
472
tryLockResult =
State
.TryLockAfterSpinLoop(this);
516
if (
State
.TryLockBeforeWait(this))
560
if (
State
.TryLockInsideWaiterSpinLoop(this))
574
if (
State
.TryLockAfterWaiterSpinLoop(this))
615
State
.UnregisterWaiter(this);
619
State
.UnregisterWaiter(this);
671
private void SignalWaiterIfNecessary(
State
state)
673
if (
State
.TrySetIsWaiterSignaledToWake(this, state))
715
if (
State
.TryLock(this))
774
if (
State
.TryLock(this))
872
_state = managedThreadId == 0 ?
State
.InitialStateValue :
State
.LockedStateValue;
914
private struct State : IEquatable<
State
>
1046
public static bool operator ==(
State
state1,
State
state2) => state1._state == state2._state;
1047
public static bool operator !=(
State
state1,
State
state2) => !(state1 == state2);
1049
bool IEquatable<
State
>.Equals(
State
other) => this == other;
1050
public override bool Equals(object? obj) => obj is
State
other && this == other;
1053
private static
State
CompareExchange(Lock lockObj,
State
toState,
State
fromState) =>
1075
var
state = new State(lockObj);
1081
State
newState = state;
1088
public static
State
Unlock(Lock lockObj)
1092
var
state = new State(Interlocked.Decrement(ref lockObj._state));
1132
var
state = new State(lockObj);
1135
State
newState = state;
1163
State
stateBeforeUpdate = CompareExchange(lockObj, newState, state);
1182
var
state = new State(lockObj);
1191
State
newState = state;
1195
State
stateBeforeUpdate = CompareExchange(lockObj, newState, state);
1212
var
state = new State(Interlocked.Add(ref lockObj._state, Neg(SpinnerCountIncrement)));
1223
State
newState = state;
1226
State
stateBeforeUpdate = CompareExchange(lockObj, newState, state);
1242
var
state = new State(lockObj);
1246
State
newState = state;
1269
State
stateBeforeUpdate = CompareExchange(lockObj, newState, state);
1298
var
state = new State(lockObj);
1309
State
newState = state;
1328
State
stateBeforeUpdate = CompareExchange(lockObj, newState, state);
1356
var
state = new State(Interlocked.Add(ref lockObj._state, Neg(IsWaiterSignaledToWakeMask)));
1369
State
newState = state;
1387
State
stateBeforeUpdate = CompareExchange(lockObj, newState, state);
1413
var
state = new State(lockObj);
1418
State
newState = state;
1425
State
stateBeforeUpdate = CompareExchange(lockObj, newState, state);
1436
public static bool TrySetIsWaiterSignaledToWake(Lock lockObj,
State
state)
1455
State
newState = state;
1462
State
stateBeforeUpdate = CompareExchange(lockObj, newState, state);