Simbody
|
This class represents a "thread local" variable: one which has a different value on each thread. More...
#include <ThreadLocal.h>
Public Member Functions | |
ThreadLocal () | |
Create a new ThreadLocal variable. | |
ThreadLocal (const T &defaultValue) | |
Create a new ThreadLocal variable. | |
~ThreadLocal () | |
T & | upd () |
Get a reference to the value for the current thread. | |
const T & | get () const |
Get a const reference to the value for the current thread. |
This class represents a "thread local" variable: one which has a different value on each thread.
This is useful in many situations when writing multithreaded code. For example, it can be used as temporary workspace for calculations. If a single workspace object were created, all access to it would need to be synchronized to prevent threads from overwriting each other's values. Using a ThreadLocal instead means that a separate workspace object will automatically be created for each thread.
To use it, simply create a ThreadLocal, then call get() or upd() to get a readable or writable reference to the value for the current thread:
ThreadLocal<int> x; ... x.upd() = 5; assert(x.get() == 5);
SimTK::ThreadLocal< T >::ThreadLocal | ( | ) | [inline] |
Create a new ThreadLocal variable.
SimTK::ThreadLocal< T >::ThreadLocal | ( | const T & | defaultValue | ) | [inline] |
Create a new ThreadLocal variable.
defaultValue | the initial value which the variable will have on each thread |
SimTK::ThreadLocal< T >::~ThreadLocal | ( | ) | [inline] |
T& SimTK::ThreadLocal< T >::upd | ( | ) | [inline] |
Get a reference to the value for the current thread.
const T& SimTK::ThreadLocal< T >::get | ( | ) | const [inline] |
Get a const reference to the value for the current thread.