2013/12/22 Daniel Villeneuve <[email protected]>: > Hello Kai, > > On 22/12/13 05:13 AM, Kai Tietz wrote: >> Hello Daniel, >> >> 2013/12/21 Daniel Villeneuve <[email protected]>: >>> Hi, >>> >>> I have a DLL library which declares an "extern __thread int iTlsExtern" >>> variable, which I can access from the library and from a program. >>> >>> However, modifications made from the library to iTlsExtern are not >>> seen from the program. >>> >>> This seems to come from the fact that the address of the variable >>> from the library is different from the address from the program. >>> >> The issue here is that you try to mix two concepts here. A >> thread-local variable can't be exported by dll-export, due its address >> is mutable for each thread. So it is invalid trying to dllexport such >> a variable. > > Yes, thread-local variables need to be allocated anew for > each thread. However, in my code, there is only a single thread and > I would have expected that there would be a single instance of the > thread-local variable that would be allocated at runtime and shared > by all components of the program. > > Is the dynamic library vs extern thread-local limitation you bring > above specific to Mingw-w64's implementation? or applicable to > Windows in general?
It applies to thread-local variables in general. Especially for Windows, as here DLL is finally linked. You are trying to export a dynamical address created in context of thread calling. So it isn't a 1:1 export supported by pe-coff file-format. > Using dynamic libraries with extern thread-local variables works as > I expect on Linux and Solaris, but this might be an OS-specific > property rather than a general standard requirement. Windows DLL != shared object for ELF. In general pe-coff != elf >> >> A valid way of exporting a TLS-variable would be by using a >> helper-function, which returns the address of the TLS-variable for the >> calling thread. > Indeed, this is a working alternative. > >> >> Regards, >> Kai >> > > Regards, > -- > Daniel Regards, Kai ------------------------------------------------------------------------------ Rapidly troubleshoot problems before they affect your business. Most IT organizations don't have a clear picture of how application performance affects their revenue. With AppDynamics, you get 100% visibility into your Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro! http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk _______________________________________________ Mingw-w64-public mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/mingw-w64-public
