API:System.SyncObjs.TSpinLock
Delphi
TSpinLock = record
private const
ThreadTrackingDisabled = $80000000;
MaxWaitingThreads = $7FFFFFFE;
WaitingThreadMask = $7FFFFFFE;
AnonymouslyOwned = 1;
LockAvailable = 0;
private
FLock: Integer;
function InternalTryEnter(Timeout: LongWord): Boolean;
function GetIsLocked: Boolean;
function GetIsLockedByCurrentThread: Boolean;
function GetIsThreadTrackingEnabled: Boolean;
procedure RemoveWaiter;
public
constructor Create(EnableThreadTracking: Boolean);
procedure Enter; inline;
procedure Exit(PublishNow: Boolean = True);
function TryEnter: Boolean; overload; inline;
function TryEnter(Timeout: LongWord): Boolean; overload;
function TryEnter(const Timeout: TTimeSpan): Boolean; overload;
property IsLocked: Boolean read GetIsLocked;
property IsLockedByCurrentThread: Boolean read GetIsLockedByCurrentThread;
property IsThreadTrackingEnabled: Boolean read GetIsThreadTrackingEnabled;
end;
C++
struct DECLSPEC_DRECORD TSpinLock
{
private:
static const unsigned ThreadTrackingDisabled = unsigned(0x80000000);
static const int MaxWaitingThreads = int(0x7ffffffe);
static const int WaitingThreadMask = int(0x7ffffffe);
static const System::Int8 AnonymouslyOwned = System::Int8(0x1);
static const System::Int8 LockAvailable = System::Int8(0x0);
int FLock;
bool __fastcall InternalTryEnter(unsigned Timeout);
bool __fastcall GetIsLocked(void);
bool __fastcall GetIsLockedByCurrentThread(void);
bool __fastcall GetIsThreadTrackingEnabled(void);
void __fastcall RemoveWaiter(void);
public:
__fastcall TSpinLock(bool EnableThreadTracking);
void __fastcall Enter(void);
void __fastcall Exit(bool PublishNow = true);
bool __fastcall TryEnter(void)/* overload */;
bool __fastcall TryEnter(unsigned Timeout)/* overload */;
#ifndef _WIN64
bool __fastcall TryEnter(const System::Timespan::TTimeSpan &Timeout)/* overload */;
#else /* _WIN64 */
bool __fastcall TryEnter(const System::Timespan::TTimeSpan Timeout)/* overload */;
#endif /* _WIN64 */
__property bool IsLocked = {read=GetIsLocked};
__property bool IsLockedByCurrentThread = {read=GetIsLockedByCurrentThread};
__property bool IsThreadTrackingEnabled = {read=GetIsThreadTrackingEnabled};
TSpinLock() {}
};
Properties
| Type | Visibility | Source | Unit | Parent |
|---|---|---|---|---|
record struct |
public | System.SyncObjs.pas System.SyncObjs.hpp |
System.SyncObjs | System.SyncObjs |
Description
Embarcadero Technologies does not currently have any additional information. Please help us document this topic by using the Discussion page!