System.SyncObjs.TInterlocked.CompareExchange
Delphi
class function CompareExchange(var Target: Pointer; Value: Pointer; Comparand: Pointer): Pointer; overload; static; inline;
class function CompareExchange(var Target: Pointer; Value: Pointer; Comparand: Pointer; out Succeeded: Boolean): 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: Cardinal; Value: Cardinal; Comparand: Cardinal): Cardinal; overload; static; inline;
class function CompareExchange(var Target: Cardinal; Value: Cardinal; Comparand: Cardinal; out Succeeded: Boolean): Cardinal; overload; static; inline;
class function CompareExchange(var Target: Int64; Value: Int64; Comparand: Int64): Int64; overload; static; inline;
class function CompareExchange(var Target: Int64; Value: Int64; Comparand: Int64; out Succeeded: Boolean): Int64; overload; static; inline;
class function CompareExchange(var Target: UInt64; Value: UInt64; Comparand: UInt64): UInt64; overload; static; inline;
class function CompareExchange(var Target: UInt64; Value: UInt64; Comparand: UInt64; out Succeeded: Boolean): UInt64; overload; static; inline;
class function CompareExchange(var Target: TObject; Value: TObject; Comparand: TObject): TObject; overload; static; inline;
class function CompareExchange(var Target: TObject; Value: TObject; Comparand: TObject; out Succeeded: Boolean): TObject; overload; static; inline;
class function CompareExchange(var Target: Double; Value: Double; Comparand: Double): Double; overload; static; inline;
class function CompareExchange(var Target: Double; Value: Double; Comparand: Double; out Succeeded: Boolean): Double; overload; static; inline;
class function CompareExchange(var Target: Single; Value: Single; Comparand: Single): Single; overload; static; inline;
class function CompareExchange(var Target: Single; Value: Single; Comparand: Single; out Succeeded: Boolean): Single; overload; static; inline;
class function CompareExchange(var Target: Boolean; Value: Boolean; Comparand: Boolean): Boolean; overload; static; inline;
class function CompareExchange(var Target: Boolean; Value: Boolean; Comparand: Boolean; out Succeeded: Boolean): Boolean; overload; static; inline;
class function CompareExchange<T: class>(var Target: T; Value: T; Comparand: T): T; overload; static; inline;
class function CompareExchange<T: class>(var Target: T; Value: T; Comparand: T; out Succeeded: Boolean): T; overload; static; inline;
C++
static void * __fastcall CompareExchange(void * &Target, void * Value, void * Comparand)/* overload */;
static void * __fastcall CompareExchange(void * &Target, void * Value, void * Comparand, /* out */ bool &Succeeded)/* 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 unsigned __fastcall CompareExchange(unsigned &Target, unsigned Value, unsigned Comparand)/* overload */;
static unsigned __fastcall CompareExchange(unsigned &Target, unsigned Value, unsigned Comparand, /* out */ bool &Succeeded)/* overload */;
static __int64 __fastcall CompareExchange(__int64 &Target, __int64 Value, __int64 Comparand)/* overload */;
static __int64 __fastcall CompareExchange(__int64 &Target, __int64 Value, __int64 Comparand, /* out */ bool &Succeeded)/* overload */;
static unsigned __int64 __fastcall CompareExchange(unsigned __int64 &Target, unsigned __int64 Value, unsigned __int64 Comparand)/* overload */;
static unsigned __int64 __fastcall CompareExchange(unsigned __int64 &Target, unsigned __int64 Value, unsigned __int64 Comparand, /* out */ bool &Succeeded)/* overload */;
static System::TObject* __fastcall CompareExchange(System::TObject* &Target, System::TObject* Value, System::TObject* Comparand)/* overload */;
static System::TObject* __fastcall CompareExchange(System::TObject* &Target, System::TObject* Value, System::TObject* Comparand, /* out */ bool &Succeeded)/* overload */;
static double __fastcall CompareExchange(double &Target, double Value, double Comparand)/* overload */;
static double __fastcall CompareExchange(double &Target, double Value, double Comparand, /* out */ bool &Succeeded)/* overload */;
static float __fastcall CompareExchange(float &Target, float Value, float Comparand)/* overload */;
static float __fastcall CompareExchange(float &Target, float Value, float Comparand, /* out */ bool &Succeeded)/* overload */;
static bool __fastcall CompareExchange(bool &Target, bool Value, bool Comparand)/* overload */;
static bool __fastcall CompareExchange(bool &Target, bool Value, bool Comparand, /* out */ bool &Succeeded)/* overload */;
template<typename T> static T __fastcall CompareExchange(T &Target, T Value, T Comparand)/* overload */;
template<typename T> static T __fastcall CompareExchange(T &Target, T Value, T Comparand, /* out */ bool &Succeeded)/* 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 receive parameters of any object type.