C++ Builder 参考手册 ➙ System::Classes ➙ TThread
System::Classes::TThread 是线程类,用于创建线程
- 简介
- 成员 (类型、属性、方法、事件)
- 例子
一. System::Classes::TThread 简介
- 继承关系:
System::TObject
⠀╙ System::Classes::TThread - 头文件:
#include <System.Classes.hpp>
- 命名空间:
System::Classes
- System::Classes::TThread 线程类是纯虚类,子类必须实现 Execute 方法。
二. System::Classes::TThread 成员
1. System::Classes::TThread 类型成员
类型 | 说明 |
---|---|
public: | |
TSystemTimes | 用于获取 CPU 使用率的结构体类型 |
2. System::Classes::TThread 属性
属性 | 类型 | 说明 |
---|---|---|
public: | ||
Current | TThread * | 获取当前代码所在的线程 |
CurrentThread | TThread * | 获取当前代码所在的线程 |
ExternalThread | bool | 是否外部创建的线程 |
FatalException | System::TObject * | 如果线程由于抛出异常没有捕获而结束, 这个属性指向这个异常, 可以在这个线程的 OnTerminate 事件里面 通过 FatalException 判断线程 是否由于异常而结束的 |
Finished | bool | 线程已经结束 |
FreeOnTerminate | bool | 线程结束时是否自动销毁 |
Handle | NativeUInt | 线程句柄。 如果是 Windows 平台,是 Windows API 的线程句柄 |
IsSingleProcessor | bool | 系统是否单个单核处理器 |
Priority | TThreadPriority | 线程优先级 |
ProcessorCount | int | 系统处理器核心总数 |
Started | bool | 线程是否开始执行 |
Suspended | bool | 线程是否被挂起 |
ThreadID | unsigned | 线程的ID。 如果是 Windows 平台,是 Windows API 的线程ID |
protected: | ||
ReturnValue | int | 线程结束时给其他等待线程的返回值, 是 WaitFor 方法的返回值 |
Terminated | bool | 是否希望线程结束, 在线程里面发现这个属性为 true 需要尽快的结束执行 |
3. System::Classes::TThread 方法
方法 | 说明 |
---|---|
public: | |
AfterConstruction | 重载了 System::TObject 的 AfterConstruction 方法, 在构造函数结束时执行 Execute 方法开始执行线程 |
CheckTerminated | 返回当前线程的 Terminated 属性, 在线程类里面需要直接访问 Terminated 属性, 只有在线程类外部才需要用这个方法。 |
CreateAnonymousThread | 创建一个匿名线程:lambda 表达式或 TProc |
ForceQueue | 把一个函数加入异步执行队列, 可以在主线程里面调用这个方法 |
GetCPUUsage | 获取 CPU 使用率 |
GetSystemTimes | 初始化获取 CPU 使用率的结构体 |
GetTickCount | 获取从系统启动开始到现在的毫秒数 |
NameThreadForDebugging | 给线程起个名字,只用来调试程序, 如果不是调试方式运行的程序,这个函数什么也不执行 |
Queue | 把一个函数加入异步执行队列, 这个函数将在主线程里面执行 |
RemoveQueuedEvents | 从异步执行队列里面去除要执行的函数 |
Resume | 继续执行已经挂起的线程 |
SetReturnValue | 在线程类的外部设置线程 ReturnValue 属性的值 |
Sleep | 挂起线程一段时间 (毫秒) |
SpinWait | 线程空转暂短的一段时间 (空转次数) |
Start | 开始执行创建时就挂起的线程 |
StaticQueue | 过时了的方法,需要使用 Queue 代替 |
StaticSynchronize | 过时了的方法, 需要使用 Synchronize 代替 |
Suspend | 挂起线程 |
Synchronize | 在主线程里面同步执行一个函数 |
Terminate | 把 Terminated 属性置位 true, 线程执行过程中发现 Terminated 属性为 true 需要尽快结束执行 |
TThread | 构造函数 |
~TThread | 析构函数 |
WaitFor | 等待线程结束,并且返回 ReturnValue 属性的值 |
Yield | 让 CPU 去执行其他线程 |
protected: | |
CheckThreadError | 线程内部调用的函数,检查执行是否有错误, 如果执行有错误,会抛出 EThread 异常 |
DoTerminate | 线程内部调用的函数,触发 OnTerminate 事件 |
Execute | 纯虚函数,子类需要重载实现这个函数, 这是线程执行的函数 |
SetFreeOnTerminate | 修改 FreeOnTerminate 属性会调用这个函数 |
TerminatedSet | 当 Terminated 属性置为 true 时执行, 由 Terminate 函数内部调用, 这是虚函数,子类可以重载 |
TObject:: | 从 System::TObject 继承过来的 |
public: | 从 System::TObject 继承过来的 |
BeforeDestruction | 在执行析构函数之前会自动调用 BeforeDestruction |
ClassInfo | 返回运行时类型信息表 (RTTI table) |
ClassName | 获取类名,不包含命名空间的类名字符串 |
ClassNameIs | 判断类名是否为参数指定的字符串 |
ClassParent | 返回父类的类型信息 |
ClassType | 返回类的类型信息 |
CleanupInstance | 清除长字符串、Variants、接口变量等 |
DefaultHandler | 默认的消息处理 |
Dispatch | 处理消息的函数 |
DisposeOf | 强制销毁对象 |
Equals | 比较当前对象和 Obj 对象是否相同 |
FieldAddress | 通过成员名称返回成员的地址 |
Free | 销毁对象 (Delphi) |
FreeInstance | 释放 NewInstance 分配的内存 |
GetHashCode | 返回对象的 hash 值 |
GetInterface | 获取指定的接口 |
GetInterfaceEntry | 获取接口项目 |
GetInterfaceTable | 获取接口表 |
InheritsFrom | 当前对象的类是否从 AClass 继承过来的 |
InitInstance | 初始化成员,给他们清零 |
InstanceSize | 返回给实例数据分配内存需要多少字节数 |
MethodAddress | 通过名称返方法的地址 |
MethodName | 通过方法的地址返回名称 |
NewInstance | 给实例分配内存,并且返回新的实例的地址 |
QualifiedClassName | 返回包含命名空间的类名 |
SafeCallException | 处理异常的函数 |
ToString | 转为字符串 |
UnitName | 返回类所在的命名空间 |
UnitScope | 返回类所在的命名空间 |
4. System::Classes::TThread 事件
事件 | 说明 |
---|---|
OnTerminate | 当线程结束执行时产生的事件, 可以在这个事件里面检查 FatalException 属性的值 来判断线程是否异常结束 |
三. System::Classes::TThread 例子
很多属性、方法和事件都带例子,可以参考以下方法或事件的例子:
也可以参考其他属性、方法或事件的例子。
相关:
- System::Syncobjs::TCriticalSection
- System::Syncobjs::TEvent
- System::Syncobjs::TMutex
- System::Classes::TComponent::BeginInvoke
- System::Classes::TComponent::EndInvoke
- System::Classes::TComponent::EndFunctionInvoke
- System::TObject
- VCL 类继承关系
C++ Builder 参考手册 ➙ System::Classes ➙ TThread