我问一个“线程状态”问题!!望各位指教
“当线程由模块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()返回的值一样吗??有什么区别啊
谢谢啊!
相关推荐
vc中获取一个线程的状态及返回值
vc中获取一个线程的状态及返回值,VS2012工程,通过点击界面上按钮,启动一个判断线程,然后再这个判断线程启动一个工作线程,在判断线程里判断工作线程的工作状态
Java线程池运行状态监控实现解析
主要介绍了Java线程池运行状态监控实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
C-Diary:用电脑写日记!! 另外,您可以在日记中写下您的感觉,并在数天内记录您的感觉。 因此,您可以检查自己的情绪状态。 当您感到不舒服时,它将在您的计算机上显示出阳性的乳制品。 补充,它甚至可能会问您一个随机的问题。 操作中有错误。 我欢迎您的贡献
C日记 用电脑写日记!! 另外,您可以在日记中写下您的感觉,并在数天内记录您的感觉。 因此,您可以检查自己的情绪状态。 当您感到不舒服时,它将在您的计算机上显示出阳性的乳制品。 补充,它甚至可能会问您一个随机的问题。
python 线程的五个状态
当程序中包含多个线程时,CPU 不是一直被特定的线程霸占,而是轮流执行各个线程。 那么,CPU 在轮换执行线程的过程中,即从创建到消亡的整个过程,可能会历经 5 种状态,分别是新建、就绪、运行、阻塞和死亡。 线程的新建状态 无论是通过 Thread 类直接实例化对象创建线程,还是通过继承自 Thread 类的子类实例化创建线程,新创建的线程在调用 start() 方法之前,不会得到执行,此阶段的线程就处于新建状态。 线程的就绪状态 当位于新建状态的线程调用 start() 方法后,该线程就转换到就绪状态。 所谓就绪,就是告诉 CPU,该线程已经可以执行了,但是具体什么时候执行,取决于 CPU
线程运行状态
线程是不太可能一直运行的,系统资源有限,多线程或多进程都必须在执行一段事件之后让出资源,交由其他线程继续执行。这是并发编程的本质。 这里有五种运行状态: 1、创建:定义好线程类对象,Thread实例 2、就绪:调用start()方法的时候线程不是立即执行,而是进入到一个等待状态,等待CPU进行调度。 3、执行:CPU执行调度到某个线程对象后,该线程对象开始执行run方法或call方法,但是不会一直占用资源,而是在一段时间之后(一个时间片的时间之后),该线程就需要暂停执行,如果这时线程还没执行完,那么就由阻塞状态切换到就绪状态,重新等待CPU执行。 4、阻塞:当某一个线程不再执行(中断,休眠,调


