System.SyncObjs.TSpinWait
Delphi
TSpinWait = record
private const
YieldThreshold = 10;
Sleep1Threshold = 20;
Sleep0Threshold = 5;
private
FCount: Integer;
function GetNextSpinCycleWillYield: Boolean;
public
procedure Reset;
procedure SpinCycle;
class procedure SpinUntil(const ACondition: TFunc<Boolean>); overload; static;
class function SpinUntil(const ACondition: TFunc<Boolean>; Timeout: Cardinal): Boolean; overload; static;
class function SpinUntil(const ACondition: TFunc<Boolean>; const Timeout: TTimeSpan): Boolean; overload; static;
property Count: Integer read FCount;
property NextSpinCycleWillYield: Boolean read GetNextSpinCycleWillYield;
end;
C++
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;
bool __fastcall GetNextSpinCycleWillYield(void);
public:
void __fastcall Reset(void);
void __fastcall SpinCycle(void);
static void __fastcall SpinUntil(const System::DelphiInterface<System::Sysutils::TFunc__1<bool> > ACondition)/* overload */;
static bool __fastcall SpinUntil(const System::DelphiInterface<System::Sysutils::TFunc__1<bool> > ACondition, unsigned Timeout)/* overload */;
#ifndef _WIN64
static bool __fastcall SpinUntil(const System::DelphiInterface<System::Sysutils::TFunc__1<bool> > ACondition, const System::Timespan::TTimeSpan &Timeout)/* overload */;
#else /* _WIN64 */
static bool __fastcall SpinUntil(const System::DelphiInterface<System::Sysutils::TFunc__1<bool> > ACondition, const System::Timespan::TTimeSpan Timeout)/* overload */;
#endif /* _WIN64 */
__property int Count = {read=FCount};
__property bool NextSpinCycleWillYield = {read=GetNextSpinCycleWillYield};
};
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
record struct |
public | System.SyncObjs.pas System.SyncObjs.hpp |
System.SyncObjs | System.SyncObjs |
説明
TSpinWait のインスタンスを使用すると、数スピン サイクルの間、現在のスレッドを待機させることができます。
TSpinWait レコードを使用して、数スピン サイクルの間、スレッドを待機させることができます。 TThread.Sleep メソッドとは違って、現在のスレッドで、TSpinWait が現在のプロセッサ時間のスライスを明け渡すことはありません。