WEB开发网
开发学院软件开发VC MFC教程(9)-- MFC的进程和线程(1) 阅读

MFC教程(9)-- MFC的进程和线程(1)

 2010-03-25 20:35:08 来源:WEB开发网   
核心提示:模块-线程状态的数据成员主要有:指向当前线程对象(CWinThread对象)的指针m_pCurrentWinThread;当前线程的框架窗口对象(CFrameWnd对象)列表m_frameList(边框窗口在创建时(见图5-8)把自身添加到m-frameList中,销毁时则删除掉,MFC教程(9)-- MFC的进程和线

模块-线程状态的数据成员主要有:

指向当前线程对象(CWinThread对象)的指针m_pCurrentWinThread;

当前线程的框架窗口对象(CFrameWnd对象)列表m_frameList(边框窗口在创建时(见图5-8)把自身添加到m-frameList中,销毁时则删除掉,通过列表m_frameList可以遍历模块所有的边框窗口);

new操作的例外处理函数m_pfnNewHandler;

临时映射锁定标识m_nTempMapLock,防止并发修改临时映射。

系列Windows对象-MFC对象的映射,如m_pmapHWND等。

这些数据成员都是线程和模块私有的。

下一节讨论MFC如何通过上述这些类来实现其状态的管理。

线程局部存储机制和状态的实现

MFC实现线程、模块或者线程-模块私有状态的基础是MFC的线程局部存储机制。MFC定义了CThreadSlotData类型的全局变量_afxThreadData来为进程的线程分配线程局部存储空间:

CThreadSlotData* _afxThreadData;

在此基础上,MFC定义了变量_afxThreadState来管理线程状态,定义了变量_afxBaseModuleState来管理进程状态。

THREAD_LOCAL(_AFX_THREAD_STATE, _afxThreadState)

PROCESS_LOCAL(_AFX_BASE_MODULE_STATE, _afxBaseModuleState)

对于每个THREAD_LOCAL宏定义的变量,进程的每个线程都有自己独立的拷贝,这个变量在不同的线程里头可以有不同的取值。

对于每个PROCESS_LOCAL宏定义的变量,每个进程都有自己独立的拷贝,这个变量在不同的进程里头可以有不同的取值。

分别解释这三个变量。

CThreadSlotData和_afxThreadData

上一页  1 2 3 4 5 6 7 8 9 10 11  下一页

Tags:MFC 教程 MFC

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接