我问一个“线程状态”问题!!望各位指教
我在一本书上看到这样的话:
“当线程由模块1进入模块2时,以模块2的模块状态为参数调用AfxSetModuleState,将局部存储变量的当前模块状态设置为模块2的模块状态:
AFX_MODULE_STATE*AFXAPI AfxSetModuleState(AFX_MODULE_STATE*pNewState)
{
_AFX_THREAD_STATE*pState=_afxThreadState;
AFX_MODULE_STSTE*pPrevState=pState->m_pModuleState;
pState->m_pModuleState=pNewState;
return pPrevState;
}
当前线程要保存AfxSetModuleState()返回的模块状态,当离开模块2时,要用它来恢复局部存储变量的当前模块状态。”
比如模块1是个.EXE程序,模块2是个DLL。EXE调用DLL的导出函数。我理解为:当EXE中的线程调用DLL导出函数,该线程首先执行
AFX_MANAGE_STATE(AfxGetStaticModuleState()),也就是首先获得当前线程的线程状态*pState,并保存原来的模块状态(即EXE的模块状态),再让
pState->m_pModuleState指向新模块状态(即DLL的模块状态)。
我知道语句“_AFX_THREAD_STATE*pState=_afxThreadState;”是得到当前线程的线程状态,我想知道这个线程状态是在哪里被定义的,在什么地方、什么时候初始化的??是在EXE中还是在DLL中?
在EXE中,线程A调用函数AfxGetThreadState()和线程A(都是线程A)在DLL中调用函数AfxGetThreadState()返回的值一样吗??有什么区别啊
谢谢啊!