public static void Write(ref CLRAtomicLong data, long newValue, [CallerMemberName] string memberName = "", [CallerFilePath] string sourceFilePath = "", [CallerLineNumber] int sourceLineNumber = 0) { var atomic = CLRAtomicLong.Get(ref data); // All writes are release in the CLR, but see the comment above. atomic.Store(newValue, MemoryOrder.Relaxed, memberName, sourceFilePath, sourceLineNumber); }
public static long Read(ref CLRAtomicLong data, [CallerMemberName] string memberName = "", [CallerFilePath] string sourceFilePath = "", [CallerLineNumber] int sourceLineNumber = 0) { var atomic = CLRAtomicLong.Get(ref data); return(atomic.Load(MemoryOrder.Relaxed, memberName, sourceFilePath, sourceLineNumber)); }
public static void Write(ref CLRAtomicLong data, long newValue, [CallerMemberName] string memberName = "", [CallerFilePath] string sourceFilePath = "", [CallerLineNumber] int sourceLineNumber = 0) { var atomic = CLRAtomicLong.Get(ref data); atomic.Store(newValue, MemoryOrder.Release, memberName, sourceFilePath, sourceLineNumber); }
public static bool CompareExchange(ref CLRAtomicLong data, long newData, long comparand, [CallerMemberName] string memberName = "", [CallerFilePath] string sourceFilePath = "", [CallerLineNumber] int sourceLineNumber = 0) { var atomic = CLRAtomicLong.Get(ref data); return(atomic.CompareExchange(newData, comparand, MemoryOrder.SequentiallyConsistent, memberName, sourceFilePath, sourceLineNumber)); }
public static void Exchange(ref CLRAtomicLong data, long newData, [CallerMemberName] string memberName = "", [CallerFilePath] string sourceFilePath = "", [CallerLineNumber] int sourceLineNumber = 0) { var atomic = CLRAtomicLong.Get(ref data); atomic.Exchange(newData, MemoryOrder.SequentiallyConsistent, memberName, sourceFilePath, sourceLineNumber); }
public static long Decrement(ref CLRAtomicLong data, [CallerMemberName] string memberName = "", [CallerFilePath] string sourceFilePath = "", [CallerLineNumber] int sourceLineNumber = 0) { var atomic = CLRAtomicLong.Get(ref data); return(atomic.Decrement(MemoryOrder.SequentiallyConsistent, memberName, sourceFilePath, sourceLineNumber)); }