CppCMS

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- Class List
- Class Hierarchy
- Class Members

Public Member Functions | List of all members
booster::thread_specific_ptr< T > Class Template Reference

Thread specific pointer. More...

`#include <booster/booster/thread.h>`

## Public Member Functions
| thread_specific_ptr ()
| ~thread_specific_ptr ()
T * | get () const
T * | operator-> () const
T & | operator* () const
void | reset (T *new_val=0)
T * | release ()

## Detailed Description

### template<typename T>
class booster::thread_specific_ptr< T >

Thread specific pointer.

Thread specific pointer is NULL for all threads. So on first use it is expected to be initialized.

The object would be destroyed when the thread exists. If thread_specific_ptr was destroyed before the thread that uses it exited the object would still exist and would be cleaned up on thread exit.

Of course an access to thread_specific_ptr object would lead to undefined behavior and would likely is going to crash your program.

Note

On Windows platform, when CppCMS and Booster are compiled statically (not used as DLL) then TLS cleanup for the threads that where not created with booster::thread would not be executed.

So when using thread_specific_ptr on Windows platform make sure that you do one of the following:

- Use booster::thread_specific_ptr only from threads created by booster::thread (or main thread)
- Link dynamically with booster library (use it as DLL)

## Constructor & Destructor Documentation

template<typename T >

booster::thread_specific_ptr< T >::thread_specific_ptr | ( |  | ) |
| inline

Create a new thread specific pointer

template<typename T >

booster::thread_specific_ptr< T >::~thread_specific_ptr | ( |  | ) |
| inline

Destroy the thread specific pointer

## Member Function Documentation

template<typename T >

T* booster::thread_specific_ptr< T >::get | ( |  | ) | const
| inline

Get thread specific value, if not initialized returns NULL

template<typename T >

T& booster::thread_specific_ptr< T >::operator* | ( |  | ) | const
| inline

Dereference pointer, if it is NULL the behavior is undefined

template<typename T >

T* booster::thread_specific_ptr< T >::operator-> | ( |  | ) | const
| inline

Dereference pointer, if it is NULL the behavior is undefined

template<typename T >

T* booster::thread_specific_ptr< T >::release | ( |  | ) |
| inline

Release exiting pointer and set thread specific pointer to 0.

The caller is responsible to destroy the returned object

template<typename T >

void booster::thread_specific_ptr< T >::reset | ( | T * | new_val = `0` | ) |
| inline

Reset the thread specific pointer and set its value to new_val.

If previous object was not NULL it would be destroyed

The documentation for this class was generated from the following file:

- booster/thread.h