Boost logo

Boost :

Subject: Re: [boost] [thread][thread_specific_ptr]
From: Steven Watanabe (watanabesj_at_[hidden])
Date: 2009-10-27 21:53:59


Sid Sacek wrote:
> In VC++ and GCC a user creates global TLS like this:
> VC++
> __declspec( thread ) int tls_1;
> __thread int tls_2;
> But using the boost library
> boost::thread_specific_ptr< int > tls_3;
> doesn't provide an initialized global variable as one would expect from thread-local-storage. Using tls_3 crashes the program if it's not pre-initialized to some object. The implication is that every time a new thread is created, it needs to first instantiate all global TLS objects.
> Am I not understanding the intentions of this class? Is there a proper or intended way of using this class? I couldn't find any example code in the boost archives.

boost::thread_specific_ptr acts as a pointer rather than a value.
It will start out as a null pointer in each thread. You can test
whether it has been set to something else with

if(tls_3.get() != 0)

In Christ,
Steven Watanabe

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