Boost logo

Boost :

From: Alexander Terekhov (terekhov_at_[hidden])
Date: 2003-02-24 07:52:19

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."

Well, let me put it this way: basically, MS-TLS implements the
"static" model of ELF-TLS.


"There's really nothing special about ELF (or Tru64) TLS. It's just 
 TSD with a different key space (your dtv array index, or in our case 
 literally a separate TSD key space mapped into the same TCB vector). 
 __tls_get_addr is just pthread_getspecific() with the allocation and 
 initialization of a TSD value built in (because it can find the size 
 and an initialization template automatically). It's nice to have that 
 built in to the compiler and linker, but that's a convenience and 
 nothing radically different." -- Butenhof []

Boost list run by bdawes at, gregod at, cpdaniel at, john at