System.SyncObjs.TInterlocked.CompareExchange

From RAD Studio API Documentation
Jump to: navigation, search

Delphi

class function CompareExchange(var Target: Pointer; Value: Pointer; Comparand: Pointer): Pointer; overload; static; inline;
class function CompareExchange(var Target: Integer; Value: Integer; Comparand: Integer): Integer; overload; static; inline;
class function CompareExchange(var Target: Integer; Value: Integer; Comparand: Integer; out Succeeded: Boolean): Integer; overload; static;
class function CompareExchange(var Target: Int64; Value: Int64; Comparand: Int64): Int64; overload; static; inline;
class function CompareExchange(var Target: TObject; Value: TObject; Comparand: TObject): TObject; overload; static; inline;
class function CompareExchange(var Target: Double; Value: Double; Comparand: Double): Double; overload; static; inline;
class function CompareExchange(var Target: Single; Value: Single; Comparand: Single): Single; overload; static; inline;
class function CompareExchange<T: class>(var Target: T; Value: T; Comparand: T): T; overload; static; inline;

C++

static void * __fastcall CompareExchange(void * &Target, void * Value, void * Comparand)/* overload */;
static int __fastcall CompareExchange(int &Target, int Value, int Comparand)/* overload */;
static int __fastcall CompareExchange(int &Target, int Value, int Comparand, /* out */ bool &Succeeded)/* overload */;
static __int64 __fastcall CompareExchange(__int64 &Target, __int64 Value, __int64 Comparand)/* overload */;
static System::TObject* __fastcall CompareExchange(System::TObject* &Target, System::TObject* Value, System::TObject* Comparand)/* overload */;
static double __fastcall CompareExchange(double &Target, double Value, double Comparand)/* overload */;
static float __fastcall CompareExchange(float &Target, float Value, float Comparand)/* overload */;
template<typename T> static T __fastcall CompareExchange(T &Target, T Value, T Comparand)/* overload */;

Properties

Type Visibility Source Unit Parent
function public
System.SyncObjs.pas
System.SyncObjs.hpp
System.SyncObjs TInterlocked

Description

Compares the contents of Target and Comparand and if they are equal, it modifies the content of Target.

CompareExchange compares the Target value with the Comparand value. If the Target value is equal to the Comparand value, then the Value value is stored in the address specified by Target. Otherwise, no operation is performed.

There are eight CompareExchange overloads. One of them accepts the additional parameter Succeeded. This parameter gets the value True if the operation succeeds, or False otherwise. The last method has both generic parameters and a generic return type; it can also receive parameters of any type.

See Also