final class · System.Threading

AtomicI64

public final class AtomicI64

An i64 that threads change together (as AtomicI32).

Kind
final class
Namespace
System.Threading
Assembly
System.Core
Access
public, final
Source file
Threading.ant

Inheritance

Base classes
Any AtomicI64

Constructors

new()
#
new(i64 value)
#

Properties

i64 Value { get; set; }
#

Methods

Load() : i64
#
Store(i64 v)
#
Add(i64 delta) : i64
#
Increment() : i64
#
Decrement() : i64
#
Exchange(i64 v) : i64
#
CompareExchange(i64 v, i64 comparand) : i64
#

Private and internal members (6)

i64 value
#

private

static unsafe extern("atomic.load.i64") LoadAt(i64* at) : i64
#

private static

static unsafe extern("atomic.store.i64") StoreAt(i64* at, i64 value)
#

private static

static unsafe extern("atomic.add.i64") AddAt(i64* at, i64 value) : i64
#

private static

static unsafe extern("atomic.xchg.i64") ExchangeAt(i64* at, i64 value) : i64
#

private static

static unsafe extern("atomic.cas.i64") CompareAt(i64* at, i64 expected, i64 value) : i64
#

private static

Inherited members (5)

Source

AtomicI64 as Antril, decompiled from its Larva HIR.

System.Threading.AtomicI64.ant
// System.Threading.AtomicI64 — System.Core (decompiled from Larva HIR)

into namespace System.Threading
{
	/// An i64 that threads change together (as AtomicI32).
	public final class AtomicI64
	{
		i64 value;

		static unsafe extern("atomic.load.i64") LoadAt(i64* at) : i64;

		static unsafe extern("atomic.store.i64") StoreAt(i64* at, i64 value);

		static unsafe extern("atomic.add.i64") AddAt(i64* at, i64 value) : i64;

		static unsafe extern("atomic.xchg.i64") ExchangeAt(i64* at, i64 value) : i64;

		static unsafe extern("atomic.cas.i64") CompareAt(i64* at, i64 expected, i64 value) : i64;

		public:
			new()
			{
			}

			new(i64 value)
			{
				this.value = value;
			}

			Load() : i64
			{
				unsafe
				{
					return LoadAt(&value);
				}
			}

			Store(i64 v)
			{
				unsafe
				{
					StoreAt(&value, v);
				}
			}

			Add(i64 delta) : i64
			{
				unsafe
				{
					return AddAt(&value, delta) + delta;
				}
			}

			Increment() : i64
			{
				unsafe
				{
					return AddAt(&value, 1) + 1;
				}
			}

			Decrement() : i64
			{
				unsafe
				{
					return AddAt(&value, -1) - 1;
				}
			}

			Exchange(i64 v) : i64
			{
				unsafe
				{
					return ExchangeAt(&value, v);
				}
			}

			CompareExchange(i64 v, i64 comparand) : i64
			{
				unsafe
				{
					return CompareAt(&value, comparand, v);
				}
			}

			i64 Value
			{
				get => Load();
				set
				{
					Store(value);
				}
			}
	}
}
Esc