API:System.TMonitor

Aus RAD Studio API Documentation
Wechseln zu: Navigation, Suche

Delphi

TMonitor = record

C++

struct DECLSPEC_DRECORD TMonitor
{
private:
    struct TWaitingThread;
    typedef TWaitingThread *PWaitingThread;
    struct DECLSPEC_DRECORD TWaitingThread
    {
    public:
        TMonitor::TWaitingThread *Next;
        unsigned Thread;
        void *WaitEvent;
    };
    struct DECLSPEC_DRECORD TSpinWait
    {
    private:
        static const System::Int8 YieldThreshold = System::Int8(0xa);
        static const System::Int8 Sleep1Threshold = System::Int8(0x14);
        static const System::Int8 Sleep0Threshold = System::Int8(0x5);
        int FCount;
    public:
        void __fastcall Reset();
        void __fastcall SpinCycle();
    };
    struct DECLSPEC_DRECORD TSpinLock
    {
    private:
        int FLock;
    public:
        void __fastcall Enter();
        void __fastcall Exit();
    };
private:
    int FLockCount;
    int FRecursionCount;
    unsigned FOwningThread;
    void *FLockEvent;
    int FSpinCount;
    TWaitingThread *FWaitQueue;
    TSpinLock FQueueLock;
    static int CacheLineSize;
    static int FDefaultSpinCount;
    static void __fastcall Spin(int Iterations);
    static int __fastcall GetCacheLineSize();
    void __fastcall QueueWaiter(TWaitingThread &WaitingThread);
    void __fastcall RemoveWaiter(TWaitingThread &WaitingThread);
    PWaitingThread __fastcall DequeueWaiter();
    void * __fastcall GetEvent();
    unsigned __fastcall CheckOwningThread();
    static void __fastcall CheckMonitorSupport();
private:
    static PMonitor __fastcall Create();
    static void __fastcall Destroy(TObject* const AObject)/* overload */;
    void __fastcall Destroy()/* overload */;
private:
    static PPMonitor __fastcall GetFieldAddress(TObject* const AObject);
    static PMonitor __fastcall GetMonitor(TObject* const AObject);
    static void __fastcall SetDefaultSpinCount(int AValue);
    bool __fastcall TryEnter()/* overload */;
    bool __fastcall Wait(PMonitor ALock, unsigned Timeout)/* overload */;
    void __fastcall Pulse()/* overload */;
    void __fastcall PulseAll()/* overload */;
private:
    bool __fastcall Enter(unsigned Timeout)/* overload */;
    void __fastcall Exit()/* overload */;
public:
    static void __fastcall SetSpinCount(TObject* const AObject, int ASpinCount);
    static void __fastcall Enter(TObject* const AObject)/* overload */;
    static bool __fastcall Enter(TObject* const AObject, unsigned Timeout)/* overload */;
    static void __fastcall Exit(TObject* const AObject)/* overload */;
    static bool __fastcall TryEnter(TObject* const AObject)/* overload */;
    static bool __fastcall Wait(TObject* const AObject, unsigned Timeout)/* overload */;
    static bool __fastcall Wait(TObject* const AObject, TObject* const ALock, unsigned Timeout)/* overload */;
    static void __fastcall Pulse(TObject* const AObject)/* overload */;
    static void __fastcall PulseAll(TObject* const AObject)/* overload */;
    /* static */ __property int DefaultSpinCount = {read=FDefaultSpinCount, write=SetDefaultSpinCount};
};

Eigenschaften

Typ Sichtbarkeit Quelle Unit Übergeordnet
record
struct
public
System.pas
System.hpp
System System

Beschreibung

Embarcadero Technologies verfügt zurzeit über keine zusätzlichen Informationen. Bitte unterstützen Sie uns bei der Dokumentation dieses Themas, indem Sie Ihre Kommentare auf der Diskussionsseite eingeben.