质疑MFC中的线程局部存储代码

FanTasyCC 2012-11-18 05:08:38
CNoTrackObject* CThreadLocalObject::GetData(CNoTrackObject* (*pfnCreateObject)())
{ if(m_nSlot == 0)
{ if(_afxThreadData == NULL)
_afxThreadData = new(__afxThreadData) CThreadSlotData;
m_nSlot = _afxThreadData->AllocSlot();
}CNoTrackObject* pValue = (CNoTrackObject*)_afxThreadData->GetThreadValue(m_nSlot);
if(pValue == NULL)
{ // 创建一个对象,此对象的成员会被初始化为0
pValue = (*pfnCreateObject)();
// 使用线程私有数据保存新创建的对象
_afxThreadData->SetValue(m_nSlot, pValue);
}
return pValue;
}


多个线程进入会存在多次调用_afxThreadData = new(__afxThreadData) CThreadSlotData;
由于afxThreadData是全局变量,这里有线程安全问题?
...全文
136 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2013-03-28
  • 打赏
  • 举报
回复
您好 我是本版版主 此帖已多日无人关注 请您及时结帖 如您认为问题没有解决可按无满意结帖处理 另外本版设置了疑难问题汇总帖 并已在版面置顶 相关规定其帖子中有说明 您可以根据规定提交您帖子的链接 如您目前不想结帖只需回帖说明 我们会删除此结帖通知 见此回复三日内无回应 我们将强制结帖 相关规定详见界面界面版关于版主结帖工作的具体办法
jiuzhoulh 2012-11-19
  • 打赏
  • 举报
回复
不会,各自的线程有各自的内存空间

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧