System.AtomicCmpExchange

Aus RAD Studio API Documentation
Wechseln zu: Navigation, Suche

Delphi

function AtomicCmpExchange(var Target; NewValue: <Integer or NativeInt or Pointer>; Comparand: <Integer or NativeInt or Pointer>; [out Succeeded: Boolean]): Integer; overload;
function AtomicCmpExchange(var Target; NewValue: <Integer or NativeInt or Pointer>; Comparand: <Integer or NativeInt or Pointer>; [out Succeeded: Boolean]): Int64; overload;
function AtomicCmpExchange(var Target; NewValue: <Integer or NativeInt or Pointer>; Comparand: <Integer or NativeInt or Pointer>; [out Succeeded: Boolean]): Pointer; overload;
function AtomicCmpExchange(var Target; NewValue: <Integer or NativeInt or Pointer>; Comparand: <Integer or NativeInt or Pointer>; [out Succeeded: Boolean]): NativeInt; overload;
function AtomicCmpExchange(var Target; NewValue: <Integer or NativeInt or Pointer>; Comparand: <Integer or NativeInt or Pointer>; [out Succeeded: Boolean]): Integer; overload;
function AtomicCmpExchange(var Target; NewValue: <Integer or NativeInt or Pointer>; Comparand: <Integer or NativeInt or Pointer>; [out Succeeded: Boolean]): Int64; overload;
function AtomicCmpExchange(var Target; NewValue: <Integer or NativeInt or Pointer>; Comparand: <Integer or NativeInt or Pointer>; [out Succeeded: Boolean]): Pointer; overload;
function AtomicCmpExchange(var Target; NewValue: <Integer or NativeInt or Pointer>; Comparand: <Integer or NativeInt or Pointer>; [out Succeeded: Boolean]): NativeInt; overload;

Eigenschaften

Typ Sichtbarkeit Quelle Unit Übergeordnet
function public System.pas System System


Beschreibung

Unteilbare (atomic) intrinsische Vergleichen-und-Austauschen-Funktion für mobile Delphi-Compiler. Vergleicht den Inhalt des Ziels (Target) mit einem gegebenen Wert (Comparand). Wenn beide Werte gleich sind, wird der Inhalt des Ziels Target durch den neuen Wert ersetzt.

Diese Funktion gibt immer den ursprünglichen Wert von (Target) zurück. Wenn der Parameter Succeeded angegeben ist, wird Succeeded bei einem Werteaustausch der Wert True zugewiesen (auch wenn Target und NewValue gleich sind); ansonsten wird False zugewiesen.

Da die mobilen Delphi-Compiler keinen integrierten Assembler unterstützen, enthält die Unit System vier intrinsische "Atomic"-Funktionen, mit denen Speicherwerte unteilbar ausgetauscht, verglichen und ausgetauscht, inkrementiert und dekrementiert werden können.

AtomicCmpExchange wird zum Vergleichen und Austauschen von Speicherwerten verwendet.

Mit unteilbaren Operationen werden:

  • Primitive, blockierende Multithreaded-Klassen implementiert
  • Primitive Klassen bereitgestellt, die für die Implementierung von sogenannten "nicht-blockierenden" Strukturen erforderlich sind

Siehe auch