[cfe-dev] status of 'thread_local'

James Gregurich bayoubengal at me.com
Tue Oct 16 14:29:40 PDT 2012


ok. I'll test it and see.


On Oct 16, 2012, at 2:26 PM, Tim Northover <t.p.northover at gmail.com> wrote:

>> What is the lifetime on a __thread variable?  It gets destructed at the time
>> the thread exits?
> 
> Pretty much. From C++11 (3.7.2):
> 
> "All variables declared with the thread_local keyword have thread
> storage duration. The storage for these
> entities shall last for the duration of the thread in which they are
> created. There is a distinct object or
> reference per thread, and use of the declared name refers to the
> entity associated with the current thread."
> 
> "A variable with thread storage duration shall be initialized before
> its first odr-use (3.2) and, if constructed,
> shall be destroyed on thread exit."
> 
> I wouldn't swear to LLVM implementing these semantics yet though. The
> initial TLS specification forbade non-trivial constructors and had no
> mention of destructors. In fact, from a quick test it looks like LLVM
> destroys the object at program exit, and only in one thread (unless
> __cxa_atexit and to a lesser extent .init_array are more magical than
> I knew).
> 
> Tim.




More information about the cfe-dev mailing list