glibmm: Glib::Threads::Private< T > Class Template Reference

Thread-local data pointer. More...

#include <glibmm/threads.h>

Public Types

using DestructorFunc = void(*)(void*)

Public Member Functions

Private (const Private < T >&)=delete
Private < T >& operator= (const Private < T >&)=delete
Private ( DestructorFunc destructor_func=& Private < T >:: delete_ptr )
Constructor. More...

T* get ()
Gets the pointer stored in the calling thread. More...

void set (T* data)
Sets the pointer in the calling thread without calling destructor_func() . More...

void replace (T* data)
Sets the pointer in the calling thread and calls destructor_func() . More...

GPrivate* gobj ()

Static Public Member Functions

static void delete_ptr (void* data)
Deletes static_cast<T*>(data) More...

Detailed Description

template<class T>

class Glib::Threads::Private< T >

Thread-local data pointer.

It is recommended that all instances of this class are statically allocated. The first time an instance is used ( get() , set() or replace() is called) glib allocates a scarce OS resource that cannot be deallocated.

Deprecated:
Please use the thread_local keyword instead.

Member Typedef Documentation

template <class T >
using Glib::Threads::Private < T >:: DestructorFunc = void (*) (void*)

Constructor & Destructor Documentation

template <class T >
Glib::Threads::Private < T >:: Private ( const Private < T >& )
delete
template <class T >
Glib::Threads::Private < T >:: Private ( DestructorFunc destructor_func = & Private < T >:: delete_ptr )
inline explicit

Constructor.

Parameters
destructor_func Function pointer, or nullptr . If destructor_func is not nullptr and the stored data pointer is not nullptr , this function is called when replace() is called and when the thread exits.

Member Function Documentation

template <class T >
static void Glib::Threads::Private < T >::delete_ptr ( void * data )
static

Deletes static_cast<T*>(data)

template <class T >
T* Glib::Threads::Private < T >::get ( )
inline

Gets the pointer stored in the calling thread.

Returns
If no value has yet been set in this thread, nullptr is returned.
template <class T >
GPrivate* Glib::Threads::Private < T >::gobj ( )
inline
template <class T >
Private <T>& Glib::Threads::Private < T >::operator= ( const Private < T >& )
delete
template <class T >
void Glib::Threads::Private < T >::replace ( T * data )
inline

Sets the pointer in the calling thread and calls destructor_func() .

If a function pointer (and not nullptr ) was specified in the constructor, and the stored data pointer before the call to replace() is not nullptr , then destructor_func() is called with this old pointer value.

Since glibmm 2.32:
template <class T >
void Glib::Threads::Private < T >::set ( T * data )
inline

Sets the pointer in the calling thread without calling destructor_func() .