MFC教程(9)-- MFC的进程和线程(2)
2010-03-25 20:35:05 来源:WEB开发网核心提示:SetValueSetValue用来把调用线程的第slot个线程局部变量的值(指针)存放到线程的MFC私有存储空间的第slot个槽位,CThreadSlotData::SetValue(int slot, void *pValue){//通过TLS索引得到线程的MFC私有存储空间pData = (CThreadData
SetValue
SetValue用来把调用线程的第slot个线程局部变量的值(指针)存放到线程的MFC私有存储空间的第slot个槽位。
CThreadSlotData::SetValue(int slot, void *pValue)
{
//通过TLS索引得到线程的MFC私有存储空间
pData = (CThreadData*)TlsGetValue(m_tlsIndex)
//没有得到值或者pValue非空且当前槽号,即
//线程局部变量的个数
//大于使用当前局部变量的线程个数时
if (pData NULL or slot > pData->nCount && pValue!=NULL)
{
if pData NULL //当前线程第一次访问该线程局部变量
{
创建一个CThreadData实例;
添加到CThreadSlotData::m_list;
令pData指向它;
}
按目前为止,线程局部变量的个数为pData->pData分配或重分配内存,
用来容纳指向真正线程数据的指针
调用TlsSetValue(pData)保存pData
}
//把指向真正线程数据的pValue保存在pData对应的slot中
pData->pData[slot] = pValue
}
管理状态
在描述了MFC状态的实现机制之后,现在来讨论MFC的状态管理和相关状态的作用。
模块状态切换
更多精彩
赞助商链接