MFC教程(9)-- MFC的进程和线程(1)
2010-03-25 20:35:08 来源:WEB开发网核心提示:CThreadLocalObject用来帮助实现一个线程局部的变量,成员变量m_nSlot表示线程局部变量在MFC线程局部存储空间中占据的槽号,MFC教程(9)-- MFC的进程和线程(1)(10),GetDataNA用来返回变量的值,GetData也可以返回变量的值,但是如果发现还没有给该变量分配槽号(m_slot=
CThreadLocalObject用来帮助实现一个线程局部的变量。成员变量m_nSlot表示线程局部变量在MFC线程局部存储空间中占据的槽号。GetDataNA用来返回变量的值。GetData也可以返回变量的值,但是如果发现还没有给该变量分配槽号(m_slot=0),则给它分配槽号并在线程的MFC局部空间为之分配一个槽;如果在槽m_nSlot还没有数据(为空),则调用参数pfnCreateObject传递的函数创建一个数据项,并保存到槽m_nSlot中。
template<class TYPE>
class CThreadLocal : public CThreadLocalObject
{
// Attributes
public:
inline TYPE* GetData()
{
TYPE* pData = (TYPE*)CThreadLocalObject::GetData(&CreateObject);
ASSERT(pData != NULL);
return pData;
}
inline TYPE* GetDataNA()
{
TYPE* pData = (TYPE*)CThreadLocalObject::GetDataNA();
return pData;
}
inline operator TYPE*()
{ return GetData(); }
inline TYPE* operator->()
{ return GetData(); }
// Implementation
public:
static CNoTrackObject* AFXAPI CreateObject()
{ return new TYPE; }
};
更多精彩
赞助商链接