La plus simple, mais pas forcément la plus propre:
__declspec(thread) int g_myGlobalVar;
La façon "propre" implique elle aussi l'usage d'une variable globale:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| TLS_INDEX g_myIndex = TlsAlloc();
void MyCallbackFunction()
{
MyStructure * pMyStructure = (MyStructure *)TlsGetValue(g_myIndex);
...
}
DWORD STDCALL ThreadProc(void*)
{
MyStructure *pMyStructure = CreateMyStructure();
TlsSetValue(g_myIndex, pMyStructure);
PoorlyThoughtCallbackUsingFunction(&MyCallbackFunction);
DestroyMyStructure(pMyStructure);
TlsSetValue(g_myIndex, NULL);
return 0;
} |
Partager