两个线程调用同一个指针的问题

dong1728 2011-07-22 09:58:47
我有一个动态链接库,在这个动态链接库中存放各种算法的函数,假设该动态库是 ADLL,我在主程序中引入该动态库,这个动态库在主程序中也多处用到,并且有一个在主程序中也利用动态库中的函数创建了一套方法集合。现在我创建两个线程,这两个线程都用到了这套方法集合,而我引入的动态库是用指针形式引用的,那么,我在一个线程中更改指针的指向对象的值,怎么能在另外的一个线程中没有改变,有什么方法或者什么折中的方法没?
大概的示例代码如下:
ADLL:是动态链接库。
class __declspec( dllimport ) ADLL* pADLL; //主程序中引入

然后在主程序中的很多地方都用到了pADLL,
如:
A()
{
pADLL->.....
}
B()
{
pADLL->.....
}

然后创建两个线程:
m_hThread1 = CreateThread( NULL, 0, SockThreadProc,
this, 0, &m_dwThreadID1 );

m_hThread2 = CreateThread( NULL, 0, SockThreadProc,
this, 0, &m_dwThreadID2 );


DWORD WINAPI CSRC_COMM_Local::SockThreadProc(LPVOID lpParam)
{
A();
B();
}

现在的问题是,怎么在线程1中更改pADLL的东西,在线程2中可以保持不变,有什么方法?
...全文
382 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
野男孩 2011-07-27
  • 打赏
  • 举报
回复
一个修改了,另一个看到不变,那就是要两份数据呗。每个线程有自己独立的copy~
xxq123321 2011-07-27
  • 打赏
  • 举报
回复
实在需要的话,使用TLS(线程局部存储)
ndy_w 2011-07-22
  • 打赏
  • 举报
回复
你的dll只有1个静态对象,就不能实现。
dll改成支持多个对象,线程各用各的就行。

15,471

社区成员

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

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