Beef Corlib
Public Types | Public Member Functions | Static Public Member Functions | List of all members
System.Threading.Interlocked Class Reference

Public Types

enum  AtomicOrdering : uint8 {
  Unordered, Relaxed, Acquire, Release,
  AcqRel, SeqCst, ORDERMASK = 7, Flag_Volatile = 8,
  Flag_ReturnModified = 0x10
}
 
enum  RMWAtomicOrdering : uint8 {
  Relaxed = (.)AtomicOrdering.Relaxed, Acquire = (.)AtomicOrdering.Acquire, Release = (.)AtomicOrdering.Release, AcqRel = (.)AtomicOrdering.AcqRel,
  SeqCst = (.)AtomicOrdering.SeqCst, Flag_Volatile = (.)AtomicOrdering.Flag_Volatile
}
 
enum  LoadAtomicOrdering : uint8 { Relaxed = (.)AtomicOrdering.Relaxed, Acquire = (.)AtomicOrdering.Acquire, SeqCst = (.)AtomicOrdering.SeqCst, Flag_Volatile = (.)AtomicOrdering.Flag_Volatile }
 
enum  StoreAtomicOrdering : uint8 { Relaxed = (.)AtomicOrdering.Relaxed, Release = (.)AtomicOrdering.Release, SeqCst = (.)AtomicOrdering.SeqCst, Flag_Volatile = (.)AtomicOrdering.Flag_Volatile }
 
enum  FenceAtomicOrdering : uint8 { Acquire = (.)AtomicOrdering.Acquire, Release = (.)AtomicOrdering.Release, AcqRel = (.)AtomicOrdering.AcqRel, SeqCst = (.)AtomicOrdering.SeqCst }
 

Public Member Functions

static void CompilerBarrier ()
 
static uint32 Load (ref uint32 location, AtomicOrdering ordering)
 

Static Public Member Functions

static void Fence< TAtomicOrdering > (TAtomicOrdering ordering=.SeqCst)
 
static T Load< T, TAtomicOrdering > (ref T location, TAtomicOrdering ordering=.SeqCst)
 
static void Store< T, TAtomicOrdering > (ref T location, T value, TAtomicOrdering ordering=.SeqCst)
 
static T Exchange< T, TAtomicOrdering > (ref T location, T value, TAtomicOrdering ordering=.SeqCst)
 Atomically sets a value and returns the original value.
 
static T CompareExchange< T, TAtomicOrdering > (ref T location, T comparand, T value, TAtomicOrdering successOrdering=.SeqCst)
 Compares 'location' to 'comparand' for equality and, if they are equal, replaces 'location' with 'value' and returns the original value in 'location'. More...
 
static T CompareExchange< T, TSuccessOrdering, TFailOrdering > (ref T location, T comparand, T value, TSuccessOrdering successOrdering, TFailOrdering failOrdering)
 Compares 'location' to 'comparand' for equality and, if they are equal, replaces 'location' with 'value' and returns the original value in 'location'. More...
 
static bool CompareStore< T, TAtomicOrdering > (ref T location, T comparand, T value, TAtomicOrdering ordering=.SeqCst)
 Compares 'location' to 'comparand' for equality and, if they are equal, replaces 'location' with 'value' and returns the original value in 'location'. More...
 
static bool CompareStoreWeak< T, TAtomicOrdering > (ref T location, T comparand, T value, TAtomicOrdering ordering=.SeqCst)
 Compares 'location' to 'comparand' for equality and, if they are equal, replaces 'location' with 'value' and returns the original value in 'location'. More...
 
static T Add< T, TAtomicOrdering > (ref T location, T value, TAtomicOrdering ordering=.SeqCst)
 
static T Add< T, TAtomicOrdering > (ref T location, T value, TAtomicOrdering ordering=.SeqCst)
 
static T ExchangeAdd< T, TAtomicOrdering > (ref T location, T value, TAtomicOrdering ordering=.SeqCst)
 
static T ExchangeAdd< T, TAtomicOrdering > (ref T location, T value, TAtomicOrdering ordering=.SeqCst)
 
static T Increment< T, TAtomicOrdering > (ref T location, TAtomicOrdering ordering=.SeqCst)
 
static T And< T, TAtomicOrdering > (ref T location, T value, TAtomicOrdering ordering=.SeqCst)
 
static T ExchangeAnd< T, TAtomicOrdering > (ref T location, T value, TAtomicOrdering ordering=.SeqCst)
 
static T Max< T, TAtomicOrdering > (ref T location, T value, TAtomicOrdering ordering=.SeqCst)
 
static T ExchangeMax< T, TAtomicOrdering > (ref T location, T value, TAtomicOrdering ordering=.SeqCst)
 
static T Min< T, TAtomicOrdering > (ref T location, T value, TAtomicOrdering ordering=.SeqCst)
 
static T ExchangeMin< T, TAtomicOrdering > (ref T location, T value, TAtomicOrdering ordering=.SeqCst)
 
static T Nand< T, TAtomicOrdering > (ref T location, T value, TAtomicOrdering ordering=.SeqCst)
 
static T ExchangeNand< T, TAtomicOrdering > (ref T location, T value, TAtomicOrdering ordering=.SeqCst)
 
static T Or< T, TAtomicOrdering > (ref T location, T value, TAtomicOrdering ordering=.SeqCst)
 
static T ExchangeOr< T, TAtomicOrdering > (ref T location, T value, TAtomicOrdering ordering=.SeqCst)
 
static T Sub< T, TAtomicOrdering > (ref T location, T value, TAtomicOrdering ordering=.SeqCst)
 
static T Sub< T, TAtomicOrdering > (ref T location, T value, TAtomicOrdering ordering=.SeqCst)
 
static T ExchangeSub< T, TAtomicOrdering > (ref T location, T value, TAtomicOrdering ordering=.SeqCst)
 
static T ExchangeSub< T, TAtomicOrdering > (ref T location, T value, TAtomicOrdering ordering=.SeqCst)
 
static T Decrement< T, TAtomicOrdering > (ref T location, TAtomicOrdering ordering=.SeqCst)
 
static T Xor< T, TAtomicOrdering > (ref T location, T value, TAtomicOrdering ordering=.SeqCst)
 
static T ExchangeXor< T, TAtomicOrdering > (ref T location, T value, TAtomicOrdering ordering=.SeqCst)
 

Member Function Documentation

◆ CompareExchange< T, TAtomicOrdering >()

static T System.Threading.Interlocked.CompareExchange< T, TAtomicOrdering > ( ref T  location,
comparand,
value,
TAtomicOrdering  successOrdering = .SeqCst 
)
inlinestatic

Compares 'location' to 'comparand' for equality and, if they are equal, replaces 'location' with 'value' and returns the original value in 'location'.

Parameters
locationThe destination, whose value is compared with comparand and possibly replaced.
valueThe value that replaces the destination value if the comparison results in equality.
comparandThe value that is compared to the value at location.
Type Constraints
TAtomicOrdering :const 
TAtomicOrdering :RMWAtomicOrdering 

◆ CompareExchange< T, TSuccessOrdering, TFailOrdering >()

static T System.Threading.Interlocked.CompareExchange< T, TSuccessOrdering, TFailOrdering > ( ref T  location,
comparand,
value,
TSuccessOrdering  successOrdering,
TFailOrdering  failOrdering 
)
inlinestatic

Compares 'location' to 'comparand' for equality and, if they are equal, replaces 'location' with 'value' and returns the original value in 'location'.

Parameters
locationThe destination, whose value is compared with comparand and possibly replaced.
valueThe value that replaces the destination value if the comparison results in equality.
comparandThe value that is compared to the value at location.
Type Constraints
TSuccessOrdering :const 
TSuccessOrdering :RMWAtomicOrdering 
TFailOrdering :const 
TFailOrdering :LoadAtomicOrdering 

◆ CompareStore< T, TAtomicOrdering >()

static bool System.Threading.Interlocked.CompareStore< T, TAtomicOrdering > ( ref T  location,
comparand,
value,
TAtomicOrdering  ordering = .SeqCst 
)
inlinestatic

Compares 'location' to 'comparand' for equality and, if they are equal, replaces 'location' with 'value' and returns the original value in 'location'.

Parameters
locationThe destination, whose value is compared with comparand and possibly replaced.
valueThe value that replaces the destination value if the comparison results in equality.
comparandThe value that is compared to the value at location.
Type Constraints
TAtomicOrdering :const 
TAtomicOrdering :RMWAtomicOrdering 

◆ CompareStoreWeak< T, TAtomicOrdering >()

static bool System.Threading.Interlocked.CompareStoreWeak< T, TAtomicOrdering > ( ref T  location,
comparand,
value,
TAtomicOrdering  ordering = .SeqCst 
)
inlinestatic

Compares 'location' to 'comparand' for equality and, if they are equal, replaces 'location' with 'value' and returns the original value in 'location'.

Parameters
locationThe destination, whose value is compared with comparand and possibly replaced.
valueThe value that replaces the destination value if the comparison results in equality.
comparandThe value that is compared to the value at location.
Type Constraints
TAtomicOrdering :const 
TAtomicOrdering :RMWAtomicOrdering