From: William E. Kempf (wekempf_at_[hidden])
Date: 2003-02-24 17:17:08
Edward Diener said:
> "Alexander Terekhov" <terekhov_at_[hidden]> wrote in message
>> Ken Hagan wrote:
>> > Alexander Terekhov wrote:
>> > >
>> > > I, for one, believe strongly that "&k" is nothing but
>> > >
>> > > "static_cast<typeof(k)*>(pthread_getspecific(__k_key));"
>> > >
>> > > It *isn't* a compile-time constant (just like &errno isn't a
>> compile time constant).
>> > MSVC has no pthread_getspecific(), so I venture to suggest that your
>> belief probably isn't valid for that compiler.
>> Uhmm. In return, I venture to suggest that MS-TLS can and shall be
>> characterized as ``utterly busted.''
>> "If a DLL declares any nonlocal data or object as __declspec(thread),
>> it can cause a protection fault if dynamically loaded."
> This is well-known by many and has never been hidden by MS. It doesn't
> mean __declspec(thread) is busted, it just means that it is limited to
> only those cases in which the DLL is not dynamically loaded, which is
> the vast majority of cases. Of course to make TLS completely foolproof,
> one does not use __declspec(thread) but instead one uses the Win32 TLS
> API functions instead.
Where you run into issues with TLS cleanup ;).
I won't be as critical as Alexander, but I will agree that the MS TLS
implementation has serious design issues which need to be corrected.
-- William E. Kempf