ROSE  0.11.96.11
Public Member Functions | List of all members
Sawyer::MultiInstanceTls< T > Class Template Reference

Description

template<typename T>
class Sawyer::MultiInstanceTls< T >

Thread local data per object instance.

This is useful when you have a class non-static data member that needs to be thread-local.

struct MyClass {
static SAWYER_THREAD_LOCAL int foo; // static thread-local using __thread, thread_local, etc.
MultiInstanceTls<int> bar; // per-instance thread local
};
MyClass a, b;
a.bar = 5;
b.bar = 6;
assert(a.bar + 1 == b.bar);

where SAWYER_THREAD_LOCAL is a macro expanding to, perhaps, "__thread". C++ only allows thread-local global variables or static member data, as with foo above. That means that a.foo and b.foo alias one another. But if you need some member data to be thread-local per object, you can declare it as MultiInstanceTls<T>. For instance, a.bar and b.bar are different storage locations, and are also thread-local.

Definition at line 190 of file Synchronization.h.

#include <Synchronization.h>

Public Member Functions

 MultiInstanceTls ()
 Default-constructed value.
 
 MultiInstanceTls (const T &value)
 Initialize value.
 
 MultiInstanceTls (const MultiInstanceTls &other)
 
MultiInstanceTlsoperator= (const T &value)
 Assignment operator.
 
MultiInstanceTlsoperator= (const MultiInstanceTls &other)
 
T & operator* ()
 
const T & operator* () const
 
T * operator-> ()
 
const T * operator-> () const
 
 operator T () const
 Implicit conversion to enclosed type. More...
 
T & get ()
 Get interior object.
 
const T & get () const
 Get interior object.
 

Member Function Documentation

◆ operator T()

template<typename T >
Sawyer::MultiInstanceTls< T >::operator T ( ) const
inline

Implicit conversion to enclosed type.

This is so that the data member can be used as if it were type T rather than a MultiInstanceTls object.

Definition at line 275 of file Synchronization.h.

References Sawyer::Container::Map< K, T, Cmp, Alloc >::insertMaybeDefault().

Here is the call graph for this function:

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