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

Reply via email to