|
Simbody
3.4 (development)
|
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.