读书人

线程间变量访问解决思路

发布时间: 2013-01-07 10:02:24 作者: rapoo

线程间变量访问
有两个线程ThreadA和ThreadB,现在ThreadA想访问ThreadB中的局部变量。能否通过获取ThreadB的句柄或者其他方法,使ThreadA间接访问ThreadB中的局部变量
[解决办法]
可不可以的我不知道`~
假如可以了`你的A在访问写局部变量的同时B在读`会发生什么?

你要考虑的是如何进行线程间通信`~

http://blog.csdn.net/blue4689/article/details/6602874
[解决办法]
这种情况,在驱动可以做到,那也需要变量线程list。

应用层,你可以把栈指针保存下来,在别的线程里面访问,不过稳定性没人会保证。

这种事很危险,除非你对这个很熟。

今天看到好几个tls的问题,呵呵呵
[解决办法]
通过线程函数传递参数或者其他机制,需要操作系统支持。不过要格外小心生存期问题!!


  DWORD WINAPI ThreadProcB( LPVOID lpParam )
  {
  int* shared_thing = (int*)lpParam;
//使用shared_thing
//....
return 0;
  }

  DWORD WINAPI ThreadProcA( LPVOID lpParam )
  {
//待共享的局变量
int something_to_be_shared = 9999;

DWORD id;
  HANDLE hThread = CreateThread(
  NULL, // default security attributes
  0, // use default stack size
ThreadProcA, // thread function
&something_to_be_shared, // argument to thread function
  0, // use default creation flags
  &id
);
  
//执行其它任务
//....


// 保证something_to_be_shared在thread B结束前有效, 这很重要!!!!
WaitForMultipleObjects(1, &hThread, TRUE, INFINITE);
CloseHandle(hThread[i]);
return 0; 
}

读书人网 >C++

热点推荐