[C con Clase] TLS: (era Duda sobre CreateThread)

Programante programante en gmail.com
Sab Mar 1 15:54:08 CET 2008


Steven R. Davidson escribió:
> Para programas más complejos, podríamos usar el TLS (Almacenamiento 
> Local del Hilo) de los hilos y guardar el manipulador de ventana en tal 
> memoria local. Sin embargo, tendríamos que pasar el índice a este búfer 
> local de memoria a la función del hilo. Por ejemplo,
>
> DWORD WINAPI FuncHilo( LPVOID param )
> {
>    HWND hPrincipal = *TlsGetValue( *((DWORD *)param) );
>    ...
> }
>
>
> DWORD dwIndice = TlsAlloc();
> HWND *pPrincipal = new HWND;
> *pPrincipal = hPrincipal;
>
> TlsSetValue( dwIndice, pPrincipal );
> ...
> DWORD dwID;
> HANDLE hHilo = CreateThread( 0, 0, FuncHilo, &dwIndice,
>                               CREATE_SUSPENDED, &dwID );
> ...
> delete pPrincipal;
> TlsFree( dwIndice );
>   
No tengo experiencia con el TLS, pero tenía entendido que llamando a 
TlsGetValue desde un thread diferente al que hizo TlsSetValue obtendría 
un valor diferente. ¿Es que al crear el hilo copia el contenido del TLS 
del hilo padre? No veo que la msdn de información en un sentido ni en otro.





Más información sobre la lista de distribución Cconclase