CWinThread类

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

CWinThread
CObject
CWinThread对象代表在一个应用程序内运行的线程。

运行的主线程通常由CWinApp的派生类提供;CWinApp由CWinThread派生。

另外,CWinThread对象允许一给定的应用程序拥有多个线程。

CWinThread支持两种线程类型:工作者线程和用户界面线程。

工作者线程没有收发消息的功能:例如,在电子表格应用程序中进行后台计算的线程。

用户界面线程具有收发消息的功能,并处理从系统收到的消息。

CWinApp及其派生类是用户界面线程的例子。

其它用户界面线程也可由CWinThread直接派生。

CWinThread类的对象存在于线程的生存期。

如果你希望改变这个特性,将
m_bAutoDelete设为FALSE。

要使你的代码和MFC是完全线程安全的,CWinThread类是完全必要的。

框架使用的用来维护与线程相关的信息的线程局部数据由CWinThread对象管理。

由于依赖CWinThread来处理线程局部数据,任何使用MFC的线程必须由MFC创建。

例如,由运行时函数_beginthreadex创建的线程不能使用任何MFC API。

为了创建一个线程,调用AfxBeginThread函数。

根据你需要工作者线程还是用户界面线程,有两种调用AfxBeginThread的格式。

如果你需要用户界面线程,则将指向你的CWinThread派生类的CRuntimeClass的指针传递给AfxBeginThread。

如果你需要创建工作者线程,则将指向控制函数的指针和控制函数的参数传递给AfxBeginThread。

对于工作者线程和用户界面线程,你可以指定可选的参数来修改优先级,堆栈大小,创建标志和安全属性。

AfxBeginThread线程将返回指向新的CWinThread对象的指针。

与调用AfxBeginThread相反,你可以构造一个CWinThread派生类的对象,然后调用CreateThread。

如果你需要在连续创建和终止线程的执行之间重复使用CWinThread对象,这种两步构造方法非常有用。

有关CWinThread的进一步信息,参见“Visual C++程序员指南”中的文章“用C++和MFC实现多线程”,“多线程:创建用户界面线程”,“多线程:创建工作者线程”和“多线程:如何使用同步”。

请参阅:CWinApp, CCmdTarget
CWinThread类成员。

相关文档
最新文档