线程间变量访问
有两个线程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;
}