C++ Builder 參考手冊 ? System::Classes ? TThread
System::Classes::TThread 是線程類,用于創(chuàng)建線程
- 簡介
- 成員 (類型殉农、屬性刀脏、方法超凳、事件)
- 例子
一. System::Classes::TThread 簡介
- 繼承關(guān)系:
System::TObject
?╙ System::Classes::TThread - 頭文件:
#include <System.Classes.hpp>
- 命名空間:
System::Classes
- System::Classes::TThread 線程類是純虛類,子類必須實現(xiàn) Execute 方法。
二. System::Classes::TThread 成員
1. System::Classes::TThread 類型成員
類型 | 說明 |
---|---|
public: | ? |
TSystemTimes | 用于獲取 CPU 使用率的結(jié)構(gòu)體類型 |
2. System::Classes::TThread 屬性
屬性 | 類型 | 說明 |
---|---|---|
public: | ? | ? |
Current | TThread * | 獲取當前代碼所在的線程 |
CurrentThread | TThread * | 獲取當前代碼所在的線程 |
ExternalThread | bool | 是否外部創(chuàng)建的線程 |
FatalException | System::TObject * | 如果線程由于拋出異常沒有捕獲而結(jié)束金麸, 這個屬性指向這個異常簿盅, 可以在這個線程的 OnTerminate 事件里面 通過 FatalException 判斷線程 是否由于異常而結(jié)束的 |
Finished | bool | 線程已經(jīng)結(jié)束 |
FreeOnTerminate | bool | 線程結(jié)束時是否自動銷毀 |
Handle | NativeUInt | 線程句柄揍魂。 如果是 Windows 平臺现斋,是 Windows API 的線程句柄 |
IsSingleProcessor | bool | 系統(tǒng)是否單個單核處理器 |
Priority | TThreadPriority | 線程優(yōu)先級 |
ProcessorCount | int | 系統(tǒng)處理器核心總數(shù) |
Started | bool | 線程是否開始執(zhí)行 |
Suspended | bool | 線程是否被掛起 |
ThreadID | unsigned | 線程的ID偎蘸。 如果是 Windows 平臺,是 Windows API 的線程ID |
protected: | ? | ? |
ReturnValue | int | 線程結(jié)束時給其他等待線程的返回值限书, 是 WaitFor 方法的返回值 |
Terminated | bool | 是否希望線程結(jié)束倦西, 在線程里面發(fā)現(xiàn)這個屬性為 true 需要盡快的結(jié)束執(zhí)行 |
3. System::Classes::TThread 方法
方法 | 說明 |
---|---|
public: | |
AfterConstruction | 重載了 System::TObject 的 AfterConstruction 方法赁严, 在構(gòu)造函數(shù)結(jié)束時執(zhí)行 Execute 方法開始執(zhí)行線程 |
CheckTerminated | 返回當前線程的 Terminated 屬性, 在線程類里面需要直接訪問 Terminated 屬性疼约, 只有在線程類外部才需要用這個方法。 |
CreateAnonymousThread | 創(chuàng)建一個匿名線程:lambda 表達式或 TProc |
ForceQueue | 把一個函數(shù)加入異步執(zhí)行隊列裆装, 可以在主線程里面調(diào)用這個方法 |
GetCPUUsage | 獲取 CPU 使用率 |
GetSystemTimes | 初始化獲取 CPU 使用率的結(jié)構(gòu)體 |
GetTickCount | 獲取從系統(tǒng)啟動開始到現(xiàn)在的毫秒數(shù) |
NameThreadForDebugging | 給線程起個名字倡缠,只用來調(diào)試程序, 如果不是調(diào)試方式運行的程序琢唾,這個函數(shù)什么也不執(zhí)行 |
Queue | 把一個函數(shù)加入異步執(zhí)行隊列盾饮, 這個函數(shù)將在主線程里面執(zhí)行 |
RemoveQueuedEvents | 從異步執(zhí)行隊列里面去除要執(zhí)行的函數(shù) |
Resume | 繼續(xù)執(zhí)行已經(jīng)掛起的線程 |
SetReturnValue | 在線程類的外部設(shè)置線程 ReturnValue 屬性的值 |
Sleep | 掛起線程一段時間 (毫秒) |
SpinWait | 線程空轉(zhuǎn)暫短的一段時間 (空轉(zhuǎn)次數(shù)) |
Start | 開始執(zhí)行創(chuàng)建時就掛起的線程 |
StaticQueue | 過時了的方法丘损,需要使用 Queue 代替 |
StaticSynchronize | 過時了的方法, 需要使用 Synchronize 代替 |
Suspend | 掛起線程 |
Synchronize | 在主線程里面同步執(zhí)行一個函數(shù) |
Terminate | 把 Terminated 屬性置位 true衔蹲, 線程執(zhí)行過程中發(fā)現(xiàn) Terminated 屬性為 true 需要盡快結(jié)束執(zhí)行 |
TThread | 構(gòu)造函數(shù) |
~TThread | 析構(gòu)函數(shù) |
WaitFor | 等待線程結(jié)束舆驶,并且返回 ReturnValue 屬性的值 |
Yield | 讓 CPU 去執(zhí)行其他線程 |
protected: | |
CheckThreadError | 線程內(nèi)部調(diào)用的函數(shù),檢查執(zhí)行是否有錯誤拘荡, 如果執(zhí)行有錯誤撬陵,會拋出 EThread 異常 |
DoTerminate | 線程內(nèi)部調(diào)用的函數(shù),觸發(fā) OnTerminate 事件 |
Execute | 純虛函數(shù)亮隙,子類需要重載實現(xiàn)這個函數(shù)垢夹, 這是線程執(zhí)行的函數(shù) |
SetFreeOnTerminate | 修改 FreeOnTerminate 屬性會調(diào)用這個函數(shù) |
TerminatedSet | 當 Terminated 屬性置為 true 時執(zhí)行果元, 由 Terminate 函數(shù)內(nèi)部調(diào)用, 這是虛函數(shù)蝇狼,子類可以重載 |
TObject:: | 從 System::TObject 繼承過來的 |
public: | 從 System::TObject 繼承過來的 |
BeforeDestruction | 在執(zhí)行析構(gòu)函數(shù)之前會自動調(diào)用 BeforeDestruction |
ClassInfo | 返回運行時類型信息表 (RTTI table) |
ClassName | 獲取類名倡怎,不包含命名空間的類名字符串 |
ClassNameIs | 判斷類名是否為參數(shù)指定的字符串 |
ClassParent | 返回父類的類型信息 |
ClassType | 返回類的類型信息 |
CleanupInstance | 清除長字符串、Variants畔派、接口變量等 |
DefaultHandler | 默認的消息處理 |
Dispatch | 處理消息的函數(shù) |
DisposeOf | 強制銷毀對象 |
Equals | 比較當前對象和 Obj 對象是否相同 |
FieldAddress | 通過成員名稱返回成員的地址 |
Free | 銷毀對象 (Delphi) |
FreeInstance | 釋放 NewInstance 分配的內(nèi)存 |
GetHashCode | 返回對象的 hash 值 |
GetInterface | 獲取指定的接口 |
GetInterfaceEntry | 獲取接口項目 |
GetInterfaceTable | 獲取接口表 |
InheritsFrom | 當前對象的類是否從 AClass 繼承過來的 |
InitInstance | 初始化成員,給他們清零 |
InstanceSize | 返回給實例數(shù)據(jù)分配內(nèi)存需要多少字節(jié)數(shù) |
MethodAddress | 通過名稱返方法的地址 |
MethodName | 通過方法的地址返回名稱 |
NewInstance | 給實例分配內(nèi)存,并且返回新的實例的地址 |
QualifiedClassName | 返回包含命名空間的類名 |
SafeCallException | 處理異常的函數(shù) |
ToString | 轉(zhuǎn)為字符串 |
UnitName | 返回類所在的命名空間 |
UnitScope | 返回類所在的命名空間 |
4. System::Classes::TThread 事件
事件 | 說明 |
---|---|
OnTerminate | 當線程結(jié)束執(zhí)行時產(chǎn)生的事件, 可以在這個事件里面檢查 FatalException 屬性的值 來判斷線程是否異常結(jié)束 |
三. System::Classes::TThread 例子
很多屬性暑塑、方法和事件都帶例子锅必,可以參考以下方法或事件的例子:
也可以參考其他屬性、方法或事件的例子分蓖。
相關(guān):
- System::Syncobjs::TCriticalSection
- System::Syncobjs::TEvent
- System::Syncobjs::TMutex
- System::Classes::TComponent::BeginInvoke
- System::Classes::TComponent::EndInvoke
- System::Classes::TComponent::EndFunctionInvoke
- System::TObject
- VCL 類繼承關(guān)系
C++ Builder 參考手冊 ? System::Classes ? TThread